/*
 * Automatically generated, do not edit this file directly
 */

#ifndef __MOONLIGHT_C_BINDING_H__
#define __MOONLIGHT_C_BINDING_H__

#include <glib.h>
#include <cairo.h>

#include "enums.h"

class Accessibility;
class AlsaSource;
class Animation;
class AnimationClock;
class Application;
class ArcSegment;
class ASFDemuxer;
class ASFMarkerDecoder;
class ASFPacket;
class ASFParser;
class AssemblyPart;
class AssemblyPartCollection;
class ASXDemuxer;
class AudioSource;
class AudioStream;
class BackEase;
class BeginStoryboard;
class BezierSegment;
class BitmapCache;
class BitmapImage;
class BitmapSource;
class BlurEffect;
class Border;
class BounceEase;
class Brush;
class CacheMode;
class Canvas;
class CircleEase;
class Clock;
class ClockGroup;
class CodecDownloader;
class Collection;
class CollectionChangedEventArgs;
class CollectionItemChangedEventArgs;
class ColorAnimation;
class ColorAnimationUsingKeyFrames;
class ColorKeyFrame;
class ColorKeyFrameCollection;
class ColumnDefinition;
class ColumnDefinitionCollection;
class ContentChangedEventArgs;
class ContentControl;
class Control;
class ControlTemplate;
class CubicEase;
class CursorPositionChangedEventArgs;
class DataTemplate;
class DeepZoomImageTileSource;
class DependencyObject;
class DependencyObjectCollection;
class Deployment;
class DiscreteColorKeyFrame;
class DiscreteDoubleKeyFrame;
class DiscreteObjectKeyFrame;
class DiscretePointKeyFrame;
class DispatcherTimer;
class DoubleCollection;
class DoubleAnimation;
class DoubleAnimationUsingKeyFrames;
class DoubleKeyFrame;
class DoubleKeyFrameCollection;
class Downloader;
class DownloadProgressEventArgs;
class DrawingAttributes;
class DropShadowEffect;
class EasingColorKeyFrame;
class EasingDoubleKeyFrame;
class EasingFunctionBase;
class EasingPointKeyFrame;
class Effect;
class ElasticEase;
class Ellipse;
class EllipseGeometry;
class ErrorEventArgs;
class EventArgs;
class EventListenerProxy;
class EventObject;
class EventTrigger;
class ExponentialEase;
class ExtensionPart;
class ExternalDecoder;
class ExternalDemuxer;
class ExternalPart;
class ExternalPartCollection;
class FfmpegDecoder;
class FfmpegDemuxer;
class FileDownloader;
class FileSource;
class FrameworkElement;
class FrameworkTemplate;
class GeneralTransform;
class Geometry;
class GeometryCollection;
class GeometryGroup;
class Glyphs;
class GradientBrush;
class GradientStop;
class GradientStopCollection;
class Grid;
class HitTestCollection;
class Icon;
class IconCollection;
class IImageConverter;
class Image;
class ImageBrush;
class ImageErrorEventArgs;
class ImageSource;
class IMediaDecoder;
class IMediaDemuxer;
class IMediaObject;
class IMediaSource;
class IMediaStream;
class InkPresenter;
class Inline;
class InlineCollection;
class InputMethod;
class InternalDownloader;
class ItemCollection;
class KeyEventArgs;
class KeyFrame;
class KeyFrameCollection;
class KeySpline;
class LayoutInformation;
class Line;
class LinearColorKeyFrame;
class LinearDoubleKeyFrame;
class LinearGradientBrush;
class LinearPointKeyFrame;
class LineBreak;
class LineGeometry;
class LineSegment;
class LogReadyRoutedEventArgs;
class ManagedStreamSource;
class ManualTimeSource;
class MarkerStream;
class Matrix;
class Matrix3D;
class Matrix3DProjection;
class MatrixTransform;
class Media;
class MediaAttribute;
class MediaAttributeCollection;
class MediaBase;
class MediaClosure;
class MediaDisposeObjectClosure;
class MediaElement;
class MediaFrame;
class MediaGetFrameClosure;
class MediaMarker;
class MediaMarkerFoundClosure;
class MediaPlayer;
class MediaReportFrameCompletedClosure;
class MediaReportSeekCompletedClosure;
class MediaSeekClosure;
class MemorySource;
class MmsDemuxer;
class MmsDownloader;
class MmsPlaylistEntry;
class MmsSecondDownloader;
class MmsSource;
class MouseButtonEventArgs;
class MouseEventArgs;
class MouseWheelEventArgs;
class Mp3Demuxer;
class MultiScaleImage;
class MultiScaleSubImage;
class MultiScaleSubImageCollection;
class MultiScaleTileSource;
class NameScope;
class NullDecoder;
class ObjectAnimationUsingKeyFrames;
class ObjectKeyFrame;
class ObjectKeyFrameCollection;
class OutOfBrowserSettings;
class Panel;
class ParallelTimeline;
class ParserErrorEventArgs;
class PassThroughDecoder;
class PasswordBox;
class Path;
class PathFigure;
class PathFigureCollection;
class PathGeometry;
class PathSegment;
class PathSegmentCollection;
class PixelShader;
class PlaneProjection;
class Playlist;
class PlaylistEntry;
class PlaylistRoot;
class PointCollection;
class PointAnimation;
class PointAnimationUsingKeyFrames;
class PointKeyFrame;
class PointKeyFrameCollection;
class PolyBezierSegment;
class Polygon;
class Polyline;
class PolyLineSegment;
class PolyQuadraticBezierSegment;
class Popup;
class PowerEase;
class ProgressEventArgs;
class ProgressiveSource;
class Projection;
class PropertyChangedEventArgs;
class PulseSource;
class QuadraticBezierSegment;
class QuadraticEase;
class QuarticEase;
class QuinticEase;
class RadialGradientBrush;
class Rectangle;
class RectangleGeometry;
class RenderingEventArgs;
class ResourceDictionary;
class ResourceDictionaryCollection;
class RotateTransform;
class RoutedEventArgs;
class RowDefinition;
class RowDefinitionCollection;
class Run;
class ScaleTransform;
class Setter;
class SetterBase;
class SetterBaseCollection;
class ShaderEffect;
class Shape;
class SineEase;
class SizeChangedEventArgs;
class SkewTransform;
class SolidColorBrush;
class SplineColorKeyFrame;
class SplineDoubleKeyFrame;
class SplinePointKeyFrame;
class Storyboard;
class Stroke;
class StrokeCollection;
class Style;
class StylusInfo;
class StylusPoint;
class StylusPointCollection;
class Surface;
class SystemTimeSource;
class TextBlock;
class TextBox;
class TextBoxBase;
class TextBoxModelChangedEventArgs;
class TextBoxView;
class TextChangedEventArgs;
class TextOptions;
class TileBrush;
class Timeline;
class TimelineCollection;
class TimelineGroup;
class TimelineMarker;
class TimelineMarkerCollection;
class TimelineMarkerRoutedEventArgs;
class TimeManager;
class TimeSource;
class TouchDevice;
class TouchPoint;
class TouchPointCollection;
class Transform;
class TransformCollection;
class TransformGroup;
class TranslateTransform;
class TriggerCollection;
class TriggerAction;
class TriggerActionCollection;
class TriggerBase;
class UIElement;
class UIElementCollection;
class UnmanagedMatrix;
class UnmanagedMatrix3D;
class UserControl;
class VideoBrush;
class VideoStream;
class VisualBrush;
class WindowSettings;
class WriteableBitmap;
class YUVConverter;


class Accessibility;
class AlsaPlayer;
class AlsaSource;
class Animation;
class AnimationClock;
class AnimationStorage;
class Application;
class Applier;
class ArcSegment;
class ArrayList;
class ASFDemuxer;
class ASFDemuxerInfo;
class ASFFrameReader;
class ASFMarkerDecoder;
class ASFMarkerDecoderInfo;
class ASFPacket;
class ASFParser;
class ASFReader;
class AssemblyPart;
class AssemblyPartCollection;
class ASXDemuxer;
class ASXDemuxerInfo;
class AudioListNode;
class AudioPlayer;
class AudioSource;
class AudioSources;
class AudioStream;
class AutoCreatePropertyValueProvider;
class AutoCreators;
class BackEase;
class BeginStoryboard;
class BezierSegment;
class BitmapCache;
class BitmapImage;
class BitmapSource;
class BlurEffect;
class Border;
class BounceEase;
class BrowserBridge;
class Brush;
class CacheMode;
class Cancellable;
class Canvas;
class CircleEase;
class Clock;
class ClockGroup;
class CodecDownloader;
class Collection;
class CollectionChangedEventArgs;
class CollectionItemChangedEventArgs;
class CollectionIterator;
class ColorAnimation;
class ColorAnimationUsingKeyFrames;
class ColorKeyFrame;
class ColorKeyFrameCollection;
class ColumnDefinition;
class ColumnDefinitionCollection;
class ContentChangedEventArgs;
class ContentControl;
class ContentDescription;
class ContentDescriptionList;
class Control;
class ControlTemplate;
class ConverterInfo;
class CubicEase;
class CursorPositionChangedEventArgs;
class DataTemplate;
class DecoderInfo;
class DeepTreeWalker;
class DeepZoomImageTileSource;
class DefaultValuePropertyValueProvider;
class DemuxerInfo;
class DependencyObject;
class DependencyObjectCollection;
class DependencyProperty;
class Deployment;
class DeploymentStack;
class DirtyLists;
class DiscreteColorKeyFrame;
class DiscreteDoubleKeyFrame;
class DiscreteObjectKeyFrame;
class DiscretePointKeyFrame;
class DispatcherTimer;
class DoubleAnimation;
class DoubleAnimationUsingKeyFrames;
class DoubleCollection;
class DoubleKeyFrame;
class DoubleKeyFrameCollection;
class Downloader;
class DownloaderRequest;
class DownloaderResponse;
class DownloadProgressEventArgs;
class DrawingAttributes;
class DropShadowEffect;
class EasingColorKeyFrame;
class EasingDoubleKeyFrame;
class EasingFunctionBase;
class EasingPointKeyFrame;
class Effect;
class ElasticEase;
class Ellipse;
class EllipseGeometry;
class ErrorEventArgs;
class EventArgs;
class EventListenerProxy;
class EventObject;
class EventTrigger;
class ExponentialEase;
class ExtensionPart;
class ExternalDecoder;
class ExternalDecoderInfo;
class ExternalDemuxer;
class ExternalPart;
class ExternalPartCollection;
class FfmpegDecoder;
class FfmpegDecoderInfo;
class FfmpegDemuxer;
class FileDownloader;
class FileSource;
class FontFace;
class FontManager;
class FrameworkElement;
class FrameworkElementProvider;
class FrameworkTemplate;
class GeneralTransform;
class Geometry;
class GeometryCollection;
class GeometryGroup;
class Glyphs;
class GradientBrush;
class GradientStop;
class GradientStopCollection;
class Grid;
class GridNode;
class GridWalker;
class HitTestCollection;
class Icon;
class IconCollection;
class IDownloader;
class IImageConverter;
class Image;
class ImageBrush;
class ImageErrorEventArgs;
class ImageSource;
class IMediaDecoder;
class IMediaDemuxer;
class IMediaObject;
class IMediaSource;
class IMediaStream;
class InheritedPropertyValueProvider;
class InkPresenter;
class Inline;
class InlineCollection;
class InputMethod;
class InternalDownloader;
class ItemCollection;
class ITextAttributes;
class Keyboard;
class KeyEventArgs;
class KeyFrame;
class KeyFrameCollection;
class KeySpline;
class LayoutInformation;
class Line;
class LinearColorKeyFrame;
class LinearDoubleKeyFrame;
class LinearGradientBrush;
class LinearPointKeyFrame;
class LineBreak;
class LineGeometry;
class LineSegment;
class List;
class LocalPropertyValueProvider;
class LogReadyRoutedEventArgs;
class ManagedStreamSource;
class ManualTimeSource;
class MarkerStream;
class Matrix;
class Matrix3D;
class Matrix3DProjection;
class MatrixTransform;
class Media;
class MediaAttribute;
class MediaAttributeCollection;
class MediaBase;
class MediaClosure;
class MediaDisposeObjectClosure;
class MediaElement;
class MediaElementPropertyValueProvider;
class MediaFrame;
class MediaGetFrameClosure;
class MediaInfo;
class MediaMarker;
class MediaMarkerFoundClosure;
class MediaPlayer;
class MediaReportFrameCompletedClosure;
class MediaReportSeekCompletedClosure;
class MediaSeekClosure;
class MediaThreadPool;
class MediaWork;
class MemorySource;
class MmsDemuxer;
class MmsDownloader;
class MmsPlaylistEntry;
class MmsSecondDownloader;
class MmsSource;
class MoonError;
class MoonlightConfiguration;
class MoonWindow;
class MoonWindowGtk;
class MoonWindowless;
class MouseButtonEventArgs;
class MouseEventArgs;
class MouseWheelEventArgs;
class Mp3Demuxer;
class Mp3DemuxerInfo;
class Mp3FrameReader;
class MultiScaleImage;
class MultiScaleImagePropertyValueProvider;
class MultiScaleSubImage;
class MultiScaleSubImageCollection;
class MultiScaleTileSource;
class Mutex;
class NameScope;
class NPStreamRequest;
class NullDecoder;
class NullDecoderInfo;
class ObjectAnimationUsingKeyFrames;
class ObjectKeyFrame;
class ObjectKeyFrameCollection;
class ObjectTracker;
class OutOfBrowserSettings;
class Panel;
class ParallelTimeline;
class ParserErrorEventArgs;
class PassThroughDecoder;
class PassThroughDecoderInfo;
class PasswordBox;
class Path;
class PathFigure;
class PathFigureCollection;
class PathGeometry;
class PathSegment;
class PathSegmentCollection;
class PixelShader;
class PlaneProjection;
class Playlist;
class PlaylistEntry;
class PlaylistKind;
class PlaylistNode;
class PlaylistParser;
class PlaylistParserInternal;
class PlaylistRoot;
class PluginDownloader;
class PluginInstance;
class PluginXamlLoader;
class PointAnimation;
class PointAnimationUsingKeyFrames;
class PointCollection;
class PointKeyFrame;
class PointKeyFrameCollection;
class PolyBezierSegment;
class Polygon;
class Polyline;
class PolyLineSegment;
class PolyQuadraticBezierSegment;
class Popup;
class PowerEase;
class ProgressEventArgs;
class ProgressiveSource;
class Projection;
class PropertyChangedEventArgs;
class PropertyValueProvider;
class PulsePlayer;
class PulseSource;
class QuadraticBezierSegment;
class QuadraticEase;
class QuarticEase;
class Queue;
class QuinticEase;
class RadialGradientBrush;
class Rectangle;
class RectangleGeometry;
class Region;
class RenderingEventArgs;
class RenderNode;
class ResourceDictionary;
class ResourceDictionaryCollection;
class ResourceDictionaryIterator;
class RotateTransform;
class RoutedEventArgs;
class RowDefinition;
class RowDefinitionCollection;
class Run;
class ScaleTransform;
class Setter;
class SetterBase;
class SetterBaseCollection;
class ShaderEffect;
class Shape;
class SineEase;
class SizeChangedEventArgs;
class SkewTransform;
class SolidColorBrush;
class SplineColorKeyFrame;
class SplineDoubleKeyFrame;
class SplinePointKeyFrame;
class Storyboard;
class StreamNotify;
class Stroke;
class StrokeCollection;
class Style;
class StylePropertyValueProvider;
class StylusInfo;
class StylusPoint;
class StylusPointCollection;
class Surface;
class SystemTimeSource;
class TabNavigationWalker;
class TextBlock;
class TextBox;
class TextBoxBase;
class TextBoxModelChangedEventArgs;
class TextBoxView;
class TextChangedEventArgs;
class TextFont;
class TextFontDescription;
class TextLayout;
class TextLayoutAttributes;
class TextOptions;
class TextStream;
class TileBrush;
class Timeline;
class TimelineCollection;
class TimelineGroup;
class TimelineMarker;
class TimelineMarkerCollection;
class TimelineMarkerRoutedEventArgs;
class TimeManager;
class TimeSource;
class ToggleNotifyListener;
class TouchDevice;
class TouchPoint;
class TouchPointCollection;
class Transform;
class TransformCollection;
class TransformGroup;
class TranslateTransform;
class TriggerAction;
class TriggerActionCollection;
class TriggerBase;
class TriggerCollection;
class Type;
class Types;
class UIElement;
class UIElementCollection;
class UIElementNode;
class UnmanagedMatrix;
class UnmanagedMatrix3D;
class UserControl;
class Validators;
class VideoBrush;
class VideoStream;
class VisualBrush;
class VisualTreeWalker;
class WindowSettings;
class WriteableBitmap;
class XamlContext;
class XamlLoader;
class Xap;
class YUVConverter;
class YUVConverterInfo;

struct asf_bitrate_mutual_exclusion;
struct asf_codec_list;
struct asf_content_description;
struct asf_data;
struct asf_error_correction;
struct asf_error_correction_data;
struct asf_extended_content_description;
struct asf_extended_stream_name;
struct asf_extended_stream_properties;
struct asf_file_properties;
struct asf_guid;
struct asf_header;
struct asf_header_extension;
struct asf_marker;
struct asf_marker_entry;
struct asf_multiple_payloads;
struct asf_object;
struct asf_payload_extension_system;
struct asf_payload_parsing_information;
struct asf_script_command;
struct asf_script_command_entry;
struct asf_single_payload;
struct asf_stream_bitrate_properties;
struct asf_stream_properties;
struct asf_video_stream_data;
struct ASFContext;
struct ASFFrameReaderData;
struct ASFFrameReaderIndex;
struct AudioData;
struct BITMAPINFOHEADER;
struct Color;
struct CornerRadius;
struct Duration;
struct FontFaceExtents;
struct FontFamily;
struct FontSource;
struct FontStretch;
struct FontStyle;
struct FontWeight;
struct GlyphInfo;
struct GlyphMetrics;
struct GridLength;
struct KeyTime;
struct ManagedStreamCallbacks;
struct ManagedTypeInfo;
struct MmsDataPacket;
struct MmsHeader;
struct MmsHeaderReason;
struct MmsPacket;
struct MoonlightCollectionObject;
struct MoonlightCollectionType;
struct MoonlightContentObject;
struct MoonlightContentType;
struct MoonlightControlObject;
struct MoonlightControlType;
struct MoonlightCornerRadius;
struct MoonlightCornerRadiusType;
struct MoonlightDependencyObjectObject;
struct MoonlightDependencyObjectType;
struct MoonlightDownloaderObject;
struct MoonlightDownloaderType;
struct MoonlightDownloadProgressEventArgs;
struct MoonlightDownloadProgressEventArgsType;
struct MoonlightDuration;
struct MoonlightDurationType;
struct MoonlightErrorEventArgs;
struct MoonlightErrorEventArgsType;
struct MoonlightEventArgs;
struct MoonlightEventArgsType;
struct MoonlightEventObjectObject;
struct MoonlightEventObjectType;
struct MoonlightGridLength;
struct MoonlightGridLengthType;
struct MoonlightImageBrushObject;
struct MoonlightImageBrushType;
struct MoonlightImageObject;
struct MoonlightImageType;
struct MoonlightKeyEventArgsObject;
struct MoonlightKeyEventArgsType;
struct MoonlightKeyTime;
struct MoonlightKeyTimeType;
struct MoonlightMediaElementObject;
struct MoonlightMediaElementType;
struct MoonlightMouseEventArgsObject;
struct MoonlightMouseEventArgsType;
struct MoonlightMultiScaleImageObject;
struct MoonlightMultiScaleImageType;
struct MoonlightObject;
struct MoonlightObjectType;
struct MoonlightPasswordBoxObject;
struct MoonlightPasswordBoxType;
struct MoonlightPoint;
struct MoonlightPointType;
struct MoonlightRect;
struct MoonlightRectType;
struct MoonlightRoutedEventArgs;
struct MoonlightRoutedEventArgsType;
struct MoonlightScriptableObjectObject;
struct MoonlightScriptableObjectType;
struct MoonlightScriptControlObject;
struct MoonlightScriptControlType;
struct MoonlightSettingsObject;
struct MoonlightSettingsType;
struct MoonlightStoryboardObject;
struct MoonlightStoryboardType;
struct MoonlightStrokeCollectionObject;
struct MoonlightStrokeCollectionType;
struct MoonlightStrokeObject;
struct MoonlightStrokeType;
struct MoonlightStylusInfoObject;
struct MoonlightStylusInfoType;
struct MoonlightStylusPointCollectionObject;
struct MoonlightStylusPointCollectionType;
struct MoonlightTextBlockObject;
struct MoonlightTextBlockType;
struct MoonlightTextBoxObject;
struct MoonlightTextBoxType;
struct MoonlightThickness;
struct MoonlightThicknessType;
struct MoonlightTimelineMarkerRoutedEventArgsObject;
struct MoonlightTimelineMarkerRoutedEventArgsType;
struct MoonlightTimeSpan;
struct MoonlightTimeSpanType;
struct MoonlightUIElementObject;
struct MoonlightUIElementType;
struct MoonNameIdMapping;
struct MpegFrame;
struct MpegFrameHeader;
struct MpegVBRHeader;
struct Point;
struct PropertyPath;
struct Rect;
struct RepeatBehavior;
struct Segment;
struct Size;
struct TextLayoutGlyphCluster;
struct TextLayoutLine;
struct TextLayoutRun;
struct Thickness;
struct Uri;
struct Value;
struct WAVEFORMATEX;
struct WAVEFORMATEXTENSIBLE;
struct XamlCallbackData;
struct XamlLoaderCallbacks;

typedef void ( * ApplyDefaultStyleCallback ) ( FrameworkElement * fwe , ManagedTypeInfo * key ) ;
typedef void ( * ApplyStyleCallback ) ( FrameworkElement * fwe , Style * style ) ;
typedef void * ( * ConvertKeyframeValueCallback ) ( int kind , DependencyProperty * property , Value * original , Value * converted ) ;
typedef ManagedStreamCallbacks ( * GetResourceCallback ) ( const char * resourceBase , const char * name ) ;
typedef void ( * TickCallHandler ) ( EventObject * object ) ;
typedef void ( * EventHandler ) ( EventObject * sender , EventArgs * args , gpointer closure ) ;
typedef void ( * ToggleNotifyHandler ) ( EventObject * sender , bool isLastRef ) ;
typedef void ( * PropertyChangeHandler ) ( DependencyObject * sender , PropertyChangedEventArgs * args , MoonError * error , gpointer closure ) ;
typedef void ( * DownloaderResponseHeaderCallback ) ( gpointer context , const char * header , const char * value ) ;
typedef void ( * DownloaderWriteFunc ) ( void * buf , gint32 offset , gint32 n , gpointer cb_data ) ;
typedef void ( * DownloaderNotifySizeFunc ) ( gint64 size , gpointer cb_data ) ;
typedef gpointer ( * DownloaderCreateStateFunc ) ( Downloader * dl ) ;
typedef void ( * DownloaderDestroyStateFunc ) ( gpointer state ) ;
typedef void ( * DownloaderOpenFunc ) ( gpointer state , const char * verb , const char * uri , bool custom_header_support , bool disable_cache ) ;
typedef void ( * DownloaderSendFunc ) ( gpointer state ) ;
typedef void ( * DownloaderAbortFunc ) ( gpointer state ) ;
typedef void ( * DownloaderHeaderFunc ) ( gpointer state , const char * header , const char * value ) ;
typedef void ( * DownloaderBodyFunc ) ( gpointer state , void * body , guint32 length ) ;
typedef gpointer ( * DownloaderCreateWebRequestFunc ) ( const char * method , const char * uri , gpointer context ) ;
typedef void ( * DownloaderSetResponseHeaderCallbackFunc ) ( gpointer state , DownloaderResponseHeaderCallback callback , gpointer context ) ;
typedef DownloaderResponse * ( * DownloaderGetResponseFunc ) ( gpointer state ) ;
typedef guint32 ( * DownloaderResponseStartedHandler ) ( DownloaderResponse * response , gpointer context ) ;
typedef guint32 ( * DownloaderResponseDataAvailableHandler ) ( DownloaderResponse * response , gpointer context , char * buffer , guint32 length ) ;
typedef guint32 ( * DownloaderResponseFinishedHandler ) ( DownloaderResponse * response , gpointer context , bool success , gpointer data , const char * uri ) ;
typedef double ( * EasingFunction ) ( double normalizedTime ) ;
typedef Size ( * MeasureOverrideCallback ) ( Size availableSize ) ;
typedef Size ( * ArrangeOverrideCallback ) ( Size finalSize ) ;
typedef UIElement * ( * GetDefaultTemplateCallback ) ( FrameworkElement * element ) ;
typedef void ( * LoadedCallback ) ( FrameworkElement * element ) ;
typedef void ( * CloseDemuxerCallback ) ( void * instance ) ;
typedef void ( * GetDiagnosticAsyncCallback ) ( void * instance , int diagnosticKind ) ;
typedef void ( * GetFrameAsyncCallback ) ( void * instance , int mediaStreamType ) ;
typedef void ( * OpenDemuxerAsyncCallback ) ( void * instance , IMediaDemuxer * demuxer ) ;
typedef void ( * SeekAsyncCallback ) ( void * instance , guint64 seekToTime ) ;
typedef void ( * SwitchMediaStreamAsyncCallback ) ( void * instance , IMediaStream * mediaStreamDescription ) ;
typedef void ( * ExternalDecoder_DecodeFrameAsyncCallback ) ( void * instance , MediaFrame * frame ) ;
typedef void ( * ExternalDecoder_OpenDecoderAsyncCallback ) ( void * instance ) ;
typedef void ( * ExternalDecoder_CleanupCallback ) ( void * instance , MediaFrame * frame ) ;
typedef void ( * ExternalDecoder_CleanStateCallback ) ( void * instance ) ;
typedef bool ( * ExternalDecoder_HasDelayedFrameCallback ) ( void * instance ) ;
typedef void ( * ExternalDecoder_DisposeCallback ) ( void * instance ) ;
typedef void ( * ExternalDecoder_DtorCallback ) ( void * instance ) ;
typedef bool ( * ExternalDecoderInfo_SupportsCallback ) ( void * instance , const char * codec ) ;
typedef IMediaDecoder * ( * ExternalDecoderInfo_Create ) ( void * instance , Media * media , IMediaStream * stream ) ;
typedef void ( * ExternalDecoderInfo_dtor ) ( void * instance ) ;
typedef bool ( * get_image_uri_func ) ( int level , int posX , int posY , Uri * uri , void * user_data ) ;
typedef gint64 TimeSpan ;


G_BEGIN_DECLS

/**
 * Application
 **/
/* @GeneratePInvoke */
Application *application_new (void);

/* @GeneratePInvoke */
Application *application_get_current (void);

/* @GeneratePInvoke */
void application_register_callbacks (Application *instance, ApplyDefaultStyleCallback apply_default_style_cb, ApplyStyleCallback apply_style_cb, GetResourceCallback get_resource_cb, ConvertKeyframeValueCallback convert_keyframe_callback);

/* @GeneratePInvoke */
void application_set_current (Application *current);

/**
 * ArcSegment
 **/
/* @GeneratePInvoke */
ArcSegment *arc_segment_new (void);

/**
 * AssemblyPart
 **/
/* @GeneratePInvoke */
AssemblyPart *assembly_part_new (void);

/**
 * AssemblyPartCollection
 **/
/* @GeneratePInvoke */
AssemblyPartCollection *assembly_part_collection_new (void);

/**
 * AudioStream
 **/
/* @GeneratePInvoke */
AudioStream *audio_stream_new (Media *media, int codec_id, int bits_per_sample, int block_align, int sample_rate, int channels, int bit_rate, gpointer extra_data, guint32 extra_data_size);

int audio_stream_get_bit_rate (AudioStream *instance);

int audio_stream_get_bits_per_sample (AudioStream *instance);

int audio_stream_get_block_align (AudioStream *instance);

int audio_stream_get_channels (AudioStream *instance);

int audio_stream_get_input_bit_rate (AudioStream *instance);

int audio_stream_get_input_bits_per_sample (AudioStream *instance);

int audio_stream_get_input_block_align (AudioStream *instance);

int audio_stream_get_input_channels (AudioStream *instance);

int audio_stream_get_input_sample_rate (AudioStream *instance);

int audio_stream_get_output_bit_rate (AudioStream *instance);

int audio_stream_get_output_bits_per_sample (AudioStream *instance);

int audio_stream_get_output_block_align (AudioStream *instance);

int audio_stream_get_output_channels (AudioStream *instance);

int audio_stream_get_output_sample_rate (AudioStream *instance);

int audio_stream_get_sample_rate (AudioStream *instance);

void audio_stream_set_bit_rate (AudioStream *instance, int value);

void audio_stream_set_bits_per_sample (AudioStream *instance, int value);

void audio_stream_set_block_align (AudioStream *instance, int value);

void audio_stream_set_channels (AudioStream *instance, int value);

void audio_stream_set_input_bit_rate (AudioStream *instance, int value);

void audio_stream_set_input_bits_per_sample (AudioStream *instance, int value);

void audio_stream_set_input_block_align (AudioStream *instance, int value);

void audio_stream_set_input_channels (AudioStream *instance, int value);

void audio_stream_set_input_sample_rate (AudioStream *instance, int value);

void audio_stream_set_output_bit_rate (AudioStream *instance, int value);

void audio_stream_set_output_bits_per_sample (AudioStream *instance, int value);

void audio_stream_set_output_block_align (AudioStream *instance, int value);

void audio_stream_set_output_channels (AudioStream *instance, int value);

void audio_stream_set_output_sample_rate (AudioStream *instance, int value);

void audio_stream_set_sample_rate (AudioStream *instance, int value);

/**
 * BackEase
 **/
/* @GeneratePInvoke */
BackEase *back_ease_new (void);

/* @GeneratePInvoke */
double back_ease_ease_in_core (BackEase *instance, double normalizedTime);

/**
 * BeginStoryboard
 **/
/* @GeneratePInvoke */
BeginStoryboard *begin_storyboard_new (void);

/**
 * BezierSegment
 **/
/* @GeneratePInvoke */
BezierSegment *bezier_segment_new (void);

/**
 * BitmapCache
 **/
/* @GeneratePInvoke */
BitmapCache *bitmap_cache_new (void);

/**
 * BitmapImage
 **/
/* @GeneratePInvoke */
BitmapImage *bitmap_image_new (void);

/* @GeneratePInvoke */
void bitmap_image_pixbuf_write (BitmapImage *instance, gpointer buffer, gint32 offset, gint32 n);

/* @GeneratePInvoke */
void bitmap_image_pixmap_complete (BitmapImage *instance);

/**
 * BitmapSource
 **/
/* @GeneratePInvoke */
BitmapSource *bitmap_source_new (void);

/* @GeneratePInvoke */
gpointer bitmap_source_get_bitmap_data (BitmapSource *instance);

/* @GeneratePInvoke */
void bitmap_source_invalidate (BitmapSource *instance);

/* @GeneratePInvoke */
void bitmap_source_set_bitmap_data (BitmapSource *instance, gpointer data, bool own);

/**
 * BlurEffect
 **/
/* @GeneratePInvoke */
BlurEffect *blur_effect_new (void);

/**
 * Border
 **/
/* @GeneratePInvoke */
Border *border_new (void);

/**
 * BounceEase
 **/
/* @GeneratePInvoke */
BounceEase *bounce_ease_new (void);

/* @GeneratePInvoke */
double bounce_ease_ease_in_core (BounceEase *instance, double normalizedTime);

/**
 * Brush
 **/
/* @GeneratePInvoke */
Brush *brush_new (void);

/**
 * CacheMode
 **/
/* @GeneratePInvoke */
CacheMode *cache_mode_new (void);

/**
 * Canvas
 **/
/* @GeneratePInvoke */
Canvas *canvas_new (void);

/**
 * CircleEase
 **/
/* @GeneratePInvoke */
CircleEase *circle_ease_new (void);

/* @GeneratePInvoke */
double circle_ease_ease_in_core (CircleEase *instance, double normalizedTime);

/**
 * Collection
 **/
/* @GeneratePInvoke */
int collection_add_with_error (Collection *instance, Value *value, MoonError *error);

/* @GeneratePInvoke */
bool collection_clear (Collection *instance);

/* @GeneratePInvoke */
bool collection_contains (Collection *instance, Value *value);

/* @GeneratePInvoke */
int collection_get_count (Collection *instance);

/* @GeneratePInvoke */
int collection_get_element_type (Collection *instance);

/* @GeneratePInvoke */
CollectionIterator *collection_get_iterator (Collection *instance);

/* @GeneratePInvoke */
Value *collection_get_value_at_with_error (Collection *instance, int index, MoonError *error);

/* @GeneratePInvoke */
int collection_index_of (Collection *instance, Value *value);

/* @GeneratePInvoke */
bool collection_insert_with_error (Collection *instance, int index, Value *value, MoonError *error);

/* @GeneratePInvoke */
bool collection_remove (Collection *instance, Value *value);

/* @GeneratePInvoke */
bool collection_remove_at_with_error (Collection *instance, int index, MoonError *error);

/* @GeneratePInvoke */
bool collection_set_value_at_with_error (Collection *instance, int index, Value *value, MoonError *error);

/**
 * CollectionChangedEventArgs
 **/
/* @GeneratePInvoke */
CollectionChangedEventArgs *collection_changed_event_args_new (void);

/* @GeneratePInvoke */
int collection_changed_event_args_get_changed_action (CollectionChangedEventArgs *instance);

/* @GeneratePInvoke */
int collection_changed_event_args_get_index (CollectionChangedEventArgs *instance);

/* @GeneratePInvoke */
Value *collection_changed_event_args_get_new_item (CollectionChangedEventArgs *instance);

/* @GeneratePInvoke */
Value *collection_changed_event_args_get_old_item (CollectionChangedEventArgs *instance);

/* @GeneratePInvoke */
void collection_changed_event_args_set_changed_action (CollectionChangedEventArgs *instance, int action);

/* @GeneratePInvoke */
void collection_changed_event_args_set_index (CollectionChangedEventArgs *instance, int index);

/* @GeneratePInvoke */
void collection_changed_event_args_set_new_item (CollectionChangedEventArgs *instance, Value *item);

/* @GeneratePInvoke */
void collection_changed_event_args_set_old_item (CollectionChangedEventArgs *instance, Value *item);

/**
 * CollectionIterator
 **/
/* @GeneratePInvoke */
void collection_iterator_destroy (CollectionIterator *iterator);

/* @GeneratePInvoke */
Value *collection_iterator_get_current (CollectionIterator *instance, MoonError *error);

/* @GeneratePInvoke */
bool collection_iterator_next (CollectionIterator *instance, MoonError *error);

/* @GeneratePInvoke */
bool collection_iterator_reset (CollectionIterator *instance);

/**
 * ColorAnimation
 **/
/* @GeneratePInvoke */
ColorAnimation *color_animation_new (void);

/**
 * ColorAnimationUsingKeyFrames
 **/
/* @GeneratePInvoke */
ColorAnimationUsingKeyFrames *color_animation_using_key_frames_new (void);

/**
 * ColorKeyFrame
 **/
/* @GeneratePInvoke */
ColorKeyFrame *color_key_frame_new (void);

/**
 * ColorKeyFrameCollection
 **/
/* @GeneratePInvoke */
ColorKeyFrameCollection *color_key_frame_collection_new (void);

/**
 * ColumnDefinition
 **/
/* @GeneratePInvoke */
ColumnDefinition *column_definition_new (void);

/**
 * ColumnDefinitionCollection
 **/
/* @GeneratePInvoke */
ColumnDefinitionCollection *column_definition_collection_new (void);

/**
 * ContentChangedEventArgs
 **/
/* @GeneratePInvoke */
Value *content_changed_event_args_get_new_content (ContentChangedEventArgs *instance);

/* @GeneratePInvoke */
Value *content_changed_event_args_get_old_content (ContentChangedEventArgs *instance);

/**
 * ContentControl
 **/
/* @GeneratePInvoke */
ContentControl *content_control_new (void);

/* @GeneratePInvoke */
bool content_control_get_content_sets_parent (ContentControl *instance);

/* @GeneratePInvoke */
void content_control_set_content_sets_parent (ContentControl *instance, bool value);

/**
 * Control
 **/
/* @GeneratePInvoke */
Control *control_new (void);

/* @GeneratePInvoke */
DependencyObject *control_get_template_child (Control *instance, const char *name);

/**
 * ControlTemplate
 **/
/* @GeneratePInvoke */
ControlTemplate *control_template_new (void);

/**
 * CubicEase
 **/
/* @GeneratePInvoke */
CubicEase *cubic_ease_new (void);

/* @GeneratePInvoke */
double cubic_ease_ease_in_core (CubicEase *instance, double normalizedTime);

/**
 * CursorPositionChangedEventArgs
 **/
/* @GeneratePInvoke */
CursorPositionChangedEventArgs *cursor_position_changed_event_args_new (void);

/* @GeneratePInvoke */
double cursor_position_changed_event_args_get_cursor_height (CursorPositionChangedEventArgs *instance);

/* @GeneratePInvoke */
double cursor_position_changed_event_args_get_cursor_x (CursorPositionChangedEventArgs *instance);

/* @GeneratePInvoke */
double cursor_position_changed_event_args_get_cursor_y (CursorPositionChangedEventArgs *instance);

/**
 * DataTemplate
 **/
/* @GeneratePInvoke */
DataTemplate *data_template_new (void);

/**
 * DeepZoomImageTileSource
 **/
/* @GeneratePInvoke */
DeepZoomImageTileSource *deep_zoom_image_tile_source_new (void);

/**
 * DependencyObject
 **/
/* @GeneratePInvoke */
void dependency_object_add_property_change_handler (DependencyObject *instance, DependencyProperty *property, PropertyChangeHandler cb, gpointer closure);

/* @GeneratePInvoke */
void dependency_object_clear_value (DependencyObject *instance, DependencyProperty *property, bool notify_listeners, MoonError *error);

/* @GeneratePInvoke */
DependencyObject *dependency_object_new (void);

/* @GeneratePInvoke */
DependencyObject *dependency_object_find_name (DependencyObject *instance, const char *name, int *element_kind);

/* @GeneratePInvoke */
const char *dependency_object_get_name (DependencyObject *instance);

/* @GeneratePInvoke */
DependencyObject *dependency_object_get_template_owner (DependencyObject *instance);

/* @GeneratePInvoke */
Value *dependency_object_get_value_no_default_with_error (DependencyObject *instance, DependencyProperty *property, MoonError *error);

/* @GeneratePInvoke */
Value *dependency_object_get_value_with_error (DependencyObject *instance, int whatami, DependencyProperty *property, MoonError *error);

/* @GeneratePInvoke */
Value *dependency_object_read_local_value_with_error (DependencyObject *instance, DependencyProperty *property, MoonError *error);

/* @GeneratePInvoke */
void dependency_object_remove_property_change_handler (DependencyObject *instance, DependencyProperty *property, PropertyChangeHandler cb);

/* @GeneratePInvoke */
void dependency_object_set_name (DependencyObject *instance, const char *name);

/* @GeneratePInvoke */
void dependency_object_set_parent (DependencyObject *instance, DependencyObject *parent, MoonError *error);

/* @GeneratePInvoke */
void dependency_object_set_template_owner (DependencyObject *instance, DependencyObject *value);

/* @GeneratePInvoke */
bool dependency_object_set_value_with_error (DependencyObject *instance, DependencyProperty *property, Value *value, MoonError *error);

/**
 * DependencyObjectCollection
 **/
/* @GeneratePInvoke */
DependencyObjectCollection *dependency_object_collection_new (void);

/**
 * DependencyProperty
 **/
/* @GeneratePInvoke */
Value *dependency_property_get_default_value (DependencyProperty *instance);

/* @GeneratePInvoke */
DependencyProperty *dependency_property_get_dependency_property (int type, const char *name);

/* @GeneratePInvoke */
DependencyProperty *dependency_property_get_dependency_property_full (int type, const char *name, bool inherits);

/* @GeneratePInvoke */
const char *dependency_property_get_name (DependencyProperty *instance);

/* @GeneratePInvoke */
int dependency_property_get_property_type (DependencyProperty *instance);

/* @GeneratePInvoke */
bool dependency_property_is_attached (DependencyProperty *instance);

/* @GeneratePInvoke */
bool dependency_property_is_nullable (DependencyProperty *instance);

/* @GeneratePInvoke */
bool dependency_property_is_read_only (DependencyProperty *instance);

/* @GeneratePInvoke */
DependencyProperty *dependency_property_register_core_property (const char *name, int property_type, int owner_type, Value *defaultValue, bool attached, bool read_only, PropertyChangeHandler callback);

/* @GeneratePInvoke */
DependencyProperty *dependency_property_register_custom_property (const char *name, int property_type, int owner_type, Value *defaultValue, bool attached, bool read_only, PropertyChangeHandler callback);

/* @GeneratePInvoke */
void dependency_property_set_is_nullable (DependencyProperty *instance, bool value);

/* @GeneratePInvoke */
void dependency_property_set_property_changed_callback (DependencyProperty *instance, PropertyChangeHandler changed_callback);

/**
 * Deployment
 **/
/* @GeneratePInvoke */
Deployment *deployment_new (void);

/* @GeneratePInvoke */
Deployment *deployment_get_current (void);

/* @GeneratePInvoke */
Types *deployment_get_types (Deployment *instance);

/* @GeneratePInvoke */
void deployment_set_current (Deployment *value);

/* @GeneratePInvoke */
void deployment_set_current_application (Deployment *instance, Application *value);

/* @GeneratePInvoke */
void deployment_set_is_loaded_from_xap (Deployment *instance, bool flag);

/**
 * DiscreteColorKeyFrame
 **/
/* @GeneratePInvoke */
DiscreteColorKeyFrame *discrete_color_key_frame_new (void);

/**
 * DiscreteDoubleKeyFrame
 **/
/* @GeneratePInvoke */
DiscreteDoubleKeyFrame *discrete_double_key_frame_new (void);

/**
 * DiscreteObjectKeyFrame
 **/
/* @GeneratePInvoke */
DiscreteObjectKeyFrame *discrete_object_key_frame_new (void);

/**
 * DiscretePointKeyFrame
 **/
/* @GeneratePInvoke */
DiscretePointKeyFrame *discrete_point_key_frame_new (void);

/**
 * DispatcherTimer
 **/
/* @GeneratePInvoke */
DispatcherTimer *dispatcher_timer_new (void);

/* @GeneratePInvoke */
void dispatcher_timer_start (DispatcherTimer *instance);

/* @GeneratePInvoke */
void dispatcher_timer_stop (DispatcherTimer *instance);

/**
 * DoubleAnimation
 **/
/* @GeneratePInvoke */
DoubleAnimation *double_animation_new (void);

/**
 * DoubleAnimationUsingKeyFrames
 **/
/* @GeneratePInvoke */
DoubleAnimationUsingKeyFrames *double_animation_using_key_frames_new (void);

/**
 * DoubleCollection
 **/
/* @GeneratePInvoke */
DoubleCollection *double_collection_new (void);

/**
 * DoubleKeyFrame
 **/
/* @GeneratePInvoke */
DoubleKeyFrame *double_key_frame_new (void);

/**
 * DoubleKeyFrameCollection
 **/
/* @GeneratePInvoke */
DoubleKeyFrameCollection *double_key_frame_collection_new (void);

/**
 * Downloader
 **/
/* @GeneratePInvoke */
void *downloader_create_web_request (Downloader *instance, const char *method, const char *uri);

/* @GeneratePInvoke */
Downloader *downloader_new (void);

/* @GeneratePInvoke */
void downloader_notify_failed (Downloader *instance, const char *msg);

/* @GeneratePInvoke */
void downloader_notify_finished (Downloader *instance, const char *final_uri);

/* @GeneratePInvoke */
void downloader_notify_size (Downloader *instance, gint64 size);

/* @GeneratePInvoke */
void downloader_set_functions (DownloaderCreateStateFunc create_state, DownloaderDestroyStateFunc destroy_state, DownloaderOpenFunc open, DownloaderSendFunc send, DownloaderAbortFunc abort, DownloaderHeaderFunc header, DownloaderBodyFunc body, DownloaderCreateWebRequestFunc request, DownloaderSetResponseHeaderCallbackFunc response_header_callback, DownloaderGetResponseFunc get_response);

/* @GeneratePInvoke */
void downloader_write (Downloader *instance, void *buf, gint32 offset, gint32 n);

/**
 * DownloaderRequest
 **/
/* @GeneratePInvoke */
void downloader_request_free (DownloaderRequest *instance);

/* @GeneratePInvoke */
void downloader_request_abort (DownloaderRequest *instance);

/* @GeneratePInvoke */
DownloaderResponse *downloader_request_get_downloader_response (DownloaderRequest *instance);

/* @GeneratePInvoke */
bool downloader_request_get_response (DownloaderRequest *instance, DownloaderResponseStartedHandler started, DownloaderResponseDataAvailableHandler available, DownloaderResponseFinishedHandler finished, gpointer context);

/* @GeneratePInvoke */
const bool downloader_request_is_aborted (DownloaderRequest *instance);

/* @GeneratePInvoke */
void downloader_request_set_body (DownloaderRequest *instance, void *body, int size);

/* @GeneratePInvoke */
void downloader_request_set_http_header (DownloaderRequest *instance, const char *name, const char *value);

/**
 * DownloaderResponse
 **/
/* @GeneratePInvoke */
void downloader_response_free (DownloaderResponse *instance);

/* @GeneratePInvoke */
void downloader_response_abort (DownloaderResponse *instance);

/* @GeneratePInvoke */
int downloader_response_get_response_status (DownloaderResponse *instance);

/* @GeneratePInvoke */
const char *downloader_response_get_response_status_text (DownloaderResponse *instance);

/* @GeneratePInvoke */
void downloader_response_set_header_visitor (DownloaderResponse *instance, DownloaderResponseHeaderCallback visitor, gpointer context);

/**
 * DownloadProgressEventArgs
 **/
/* @GeneratePInvoke */
double download_progress_event_args_get_progress (DownloadProgressEventArgs *instance);

/**
 * DrawingAttributes
 **/
/* @GeneratePInvoke */
DrawingAttributes *drawing_attributes_new (void);

/**
 * DropShadowEffect
 **/
/* @GeneratePInvoke */
DropShadowEffect *drop_shadow_effect_new (void);

/**
 * EasingColorKeyFrame
 **/
/* @GeneratePInvoke */
EasingColorKeyFrame *easing_color_key_frame_new (void);

/**
 * EasingDoubleKeyFrame
 **/
/* @GeneratePInvoke */
EasingDoubleKeyFrame *easing_double_key_frame_new (void);

/**
 * EasingFunctionBase
 **/
/* @GeneratePInvoke */
EasingFunctionBase *easing_function_base_new (void);

/* @GeneratePInvoke */
void easing_function_base_set_easing_function (EasingFunctionBase *instance, EasingFunction value);

/**
 * EasingPointKeyFrame
 **/
/* @GeneratePInvoke */
EasingPointKeyFrame *easing_point_key_frame_new (void);

/**
 * Effect
 **/
/* @GeneratePInvoke */
Effect *effect_new (void);

/**
 * ElasticEase
 **/
/* @GeneratePInvoke */
double elastic_ease_ease_in_core (ElasticEase *instance, double normalizedTime);

/* @GeneratePInvoke */
ElasticEase *elastic_ease_new (void);

/**
 * Ellipse
 **/
/* @GeneratePInvoke */
Ellipse *ellipse_new (void);

/**
 * EllipseGeometry
 **/
/* @GeneratePInvoke */
EllipseGeometry *ellipse_geometry_new (void);

/**
 * ErrorEventArgs
 **/
/* @GeneratePInvoke */
int error_event_args_get_error_code (ErrorEventArgs *instance);

/* @GeneratePInvoke */
const char *error_event_args_get_error_message (ErrorEventArgs *instance);

/* @GeneratePInvoke */
int error_event_args_get_error_type (ErrorEventArgs *instance);

/* @GeneratePInvoke */
gpointer error_event_args_get_moon_error (ErrorEventArgs *instance);

/**
 * EventObject
 **/
/* @GeneratePInvoke */
int event_object_add_handler (EventObject *instance, int event_id, EventHandler handler, gpointer data, GDestroyNotify data_dtor);

/* @GeneratePInvoke */
void event_object_add_on_event_handler (EventObject *instance, int event_id, EventHandler handler, gpointer data, GDestroyNotify data_dtor);

/* @GeneratePInvoke */
void event_object_add_toggle_ref_notifier (EventObject *instance, ToggleNotifyHandler tr);

/* @GeneratePInvoke */
int event_object_add_xaml_handler (EventObject *instance, int event_id, EventHandler handler, gpointer data, GDestroyNotify data_dtor);

/* @GeneratePInvoke */
void event_object_do_emit_current_context (EventObject *instance, int event_id, EventArgs *calldata);

/* @GeneratePInvoke */
int event_object_get_object_type (EventObject *instance);

/* @GeneratePInvoke */
Surface *event_object_get_surface (EventObject *instance);

/* @GeneratePInvoke */
const char *event_object_get_type_name (EventObject *instance);

/* @GeneratePInvoke */
void event_object_ref (EventObject *instance);

/* @GeneratePInvoke */
int event_object_remove_handler (EventObject *instance, int event_id, EventHandler handler, gpointer data);

/* @GeneratePInvoke */
void event_object_remove_on_event_handler (EventObject *instance, int event_id, EventHandler handler, gpointer data);

/* @GeneratePInvoke */
void event_object_remove_toggle_ref_notifier (EventObject *instance);

/* @GeneratePInvoke */
void event_object_set_object_type (EventObject *instance, int value);

/* @GeneratePInvoke */
void event_object_unref (EventObject *instance);

/**
 * EventTrigger
 **/
/* @GeneratePInvoke */
EventTrigger *event_trigger_new (void);

/**
 * ExponentialEase
 **/
/* @GeneratePInvoke */
double exponential_ease_ease_in_core (ExponentialEase *instance, double normalizedTime);

/* @GeneratePInvoke */
ExponentialEase *exponential_ease_new (void);

/**
 * ExtensionPart
 **/
/* @GeneratePInvoke */
ExtensionPart *extension_part_new (void);

/**
 * ExternalDecoder
 **/
ExternalDecoder *external_decoder_new (Media *media, IMediaStream *stream, void *instance, const char *name, ExternalDecoder_DecodeFrameAsyncCallback decode_frame_async, ExternalDecoder_OpenDecoderAsyncCallback open_decoder_async, ExternalDecoder_CleanupCallback cleanup, ExternalDecoder_CleanStateCallback clean_state, ExternalDecoder_HasDelayedFrameCallback has_delayed_frame, ExternalDecoder_DisposeCallback dispose, ExternalDecoder_DtorCallback dtor);

/**
 * ExternalDecoderInfo
 **/
ExternalDecoderInfo *external_decoder_info_new (void *instance, const char *name, ExternalDecoderInfo_SupportsCallback supports, ExternalDecoderInfo_Create create, ExternalDecoderInfo_dtor dtor);

/**
 * ExternalDemuxer
 **/
/* @GeneratePInvoke */
gint32 external_demuxer_add_stream (ExternalDemuxer *instance, IMediaStream *stream);

/* @GeneratePInvoke */
void external_demuxer_clear_callbacks (ExternalDemuxer *instance);

/* @GeneratePInvoke */
void external_demuxer_set_can_seek (ExternalDemuxer *instance, bool value);

/**
 * ExternalPart
 **/
/* @GeneratePInvoke */
ExternalPart *external_part_new (void);

/**
 * ExternalPartCollection
 **/
/* @GeneratePInvoke */
ExternalPartCollection *external_part_collection_new (void);

/**
 * FrameworkElement
 **/
/* @GeneratePInvoke */
bool framework_element_apply_template (FrameworkElement *instance);

/* @GeneratePInvoke */
Size framework_element_arrange_override (FrameworkElement *instance, Size finalSize);

/* @GeneratePInvoke */
FrameworkElement *framework_element_new (void);

/* @GeneratePInvoke */
DependencyObject *framework_element_get_logical_parent (FrameworkElement *instance);

/* @GeneratePInvoke */
Size framework_element_measure_override (FrameworkElement *instance, Size availableSize);

/* @GeneratePInvoke */
void framework_element_register_managed_overrides (FrameworkElement *instance, MeasureOverrideCallback measure_cb, ArrangeOverrideCallback arrange_cb, GetDefaultTemplateCallback get_default_template_cb, LoadedCallback loaded_cb);

/* @GeneratePInvoke */
void framework_element_set_default_style (FrameworkElement *instance, Style *value);

/* @GeneratePInvoke */
void framework_element_set_logical_parent (FrameworkElement *instance, DependencyObject *logical_parent, MoonError *error);

/**
 * FrameworkTemplate
 **/
/* @GeneratePInvoke */
FrameworkTemplate *framework_template_new (void);

/* @GeneratePInvoke */
DependencyObject *framework_template_get_visual_tree (FrameworkTemplate *instance, FrameworkElement *templateBindingSource);

/**
 * GeneralTransform
 **/
/* @GeneratePInvoke */
GeneralTransform *general_transform_new (void);

/* @GeneratePInvoke */
Matrix *general_transform_get_matrix (GeneralTransform *instance);

/**
 * Geometry
 **/
/* @GeneratePInvoke */
Geometry *geometry_new (void);

/* @GeneratePInvoke */
Rect geometry_get_bounds (Geometry *instance);

/**
 * GeometryCollection
 **/
/* @GeneratePInvoke */
GeometryCollection *geometry_collection_new (void);

/**
 * GeometryGroup
 **/
/* @GeneratePInvoke */
GeometryGroup *geometry_group_new (void);

/**
 * Glyphs
 **/
/* @GeneratePInvoke */
Glyphs *glyphs_new (void);

/**
 * GradientBrush
 **/
/* @GeneratePInvoke */
GradientBrush *gradient_brush_new (void);

/**
 * GradientStop
 **/
/* @GeneratePInvoke */
GradientStop *gradient_stop_new (void);

/**
 * GradientStopCollection
 **/
/* @GeneratePInvoke */
GradientStopCollection *gradient_stop_collection_new (void);

/**
 * Grid
 **/
/* @GeneratePInvoke */
Grid *grid_new (void);

/**
 * HitTestCollection
 **/
/* @GeneratePInvoke */
HitTestCollection *hit_test_collection_new (void);

/**
 * Icon
 **/
/* @GeneratePInvoke */
Icon *icon_new (void);

/**
 * IconCollection
 **/
/* @GeneratePInvoke */
IconCollection *icon_collection_new (void);

/**
 * Image
 **/
/* @GeneratePInvoke */
Image *image_new (void);

/* @GeneratePInvoke */
void image_set_source (Image *instance, ImageSource *source);

/**
 * ImageBrush
 **/
/* @GeneratePInvoke */
ImageBrush *image_brush_new (void);

/**
 * ImageSource
 **/
/* @GeneratePInvoke */
ImageSource *image_source_new (void);

/**
 * IMediaDecoder
 **/
void imedia_decoder_report_decode_frame_completed (IMediaDecoder *instance, MediaFrame *frame);

void imedia_decoder_report_open_decoder_completed (IMediaDecoder *instance);

void imedia_decoder_set_pixel_format (IMediaDecoder *instance, int value);

/**
 * IMediaDemuxer
 **/
/* @GeneratePInvoke */
void imedia_demuxer_report_get_diagnostic_completed (IMediaDemuxer *instance, int diagnosticKind, gint64 diagnosticValue);

/* @GeneratePInvoke */
void imedia_demuxer_report_get_frame_completed (IMediaDemuxer *instance, MediaFrame *frame);

/* @GeneratePInvoke */
void imedia_demuxer_report_get_frame_progress (IMediaDemuxer *instance, double bufferingProgress);

/* @GeneratePInvoke */
void imedia_demuxer_report_open_demuxer_completed (IMediaDemuxer *instance);

/* @GeneratePInvoke */
void imedia_demuxer_report_seek_completed (IMediaDemuxer *instance, guint64 pts);

/* @GeneratePInvoke */
void imedia_demuxer_report_switch_media_stream_completed (IMediaDemuxer *instance, IMediaStream *stream);

/* @GeneratePInvoke */
void imedia_demuxer_set_is_drm (IMediaDemuxer *instance, bool value);

/**
 * IMediaObject
 **/
/* @GeneratePInvoke */
Media *imedia_object_get_media_reffed (IMediaObject *instance);

void imedia_object_report_error_occurred (IMediaObject *instance, const char *message);

/**
 * IMediaStream
 **/
const char *imedia_stream_get_codec (IMediaStream *instance);

int imedia_stream_get_codec_id (IMediaStream *instance);

guint64 imedia_stream_get_duration (IMediaStream *instance);

void *imedia_stream_get_extra_data (IMediaStream *instance);

int imedia_stream_get_extra_data_size (IMediaStream *instance);

int imedia_stream_get_stream_type (IMediaStream *instance);

void imedia_stream_set_codec_id (IMediaStream *instance, int value);

void imedia_stream_set_duration (IMediaStream *instance, guint64 value);

void imedia_stream_set_extra_data (IMediaStream *instance, void *value);

void imedia_stream_set_extra_data_size (IMediaStream *instance, int value);

/**
 * InkPresenter
 **/
/* @GeneratePInvoke */
InkPresenter *ink_presenter_new (void);

/**
 * Inline
 **/
/* @GeneratePInvoke */
Inline *inline_new (void);

/**
 * InlineCollection
 **/
/* @GeneratePInvoke */
InlineCollection *inline_collection_new (void);

/**
 * InputMethod
 **/
/* @GeneratePInvoke */
InputMethod *input_method_new (void);

/**
 * ItemCollection
 **/
/* @GeneratePInvoke */
ItemCollection *item_collection_new (void);

/**
 * Keyboard
 **/
/* @GeneratePInvoke */
int keyboard_get_modifiers (void);

/**
 * KeyEventArgs
 **/
/* @GeneratePInvoke */
int key_event_args_get_key (KeyEventArgs *instance);

/* @GeneratePInvoke */
int key_event_args_get_platform_key_code (KeyEventArgs *instance);

/* @GeneratePInvoke */
KeyEventArgs *key_event_args_new (void);

/**
 * KeyFrameCollection
 **/
/* @GeneratePInvoke */
KeyFrameCollection *key_frame_collection_new (void);

/**
 * KeySpline
 **/
/* @GeneratePInvoke */
KeySpline *key_spline_new (void);

/**
 * Line
 **/
/* @GeneratePInvoke */
Line *line_new (void);

/**
 * LinearColorKeyFrame
 **/
/* @GeneratePInvoke */
LinearColorKeyFrame *linear_color_key_frame_new (void);

/**
 * LinearDoubleKeyFrame
 **/
/* @GeneratePInvoke */
LinearDoubleKeyFrame *linear_double_key_frame_new (void);

/**
 * LinearGradientBrush
 **/
/* @GeneratePInvoke */
LinearGradientBrush *linear_gradient_brush_new (void);

/**
 * LinearPointKeyFrame
 **/
/* @GeneratePInvoke */
LinearPointKeyFrame *linear_point_key_frame_new (void);

/**
 * LineBreak
 **/
/* @GeneratePInvoke */
LineBreak *line_break_new (void);

/**
 * LineGeometry
 **/
/* @GeneratePInvoke */
LineGeometry *line_geometry_new (void);

/**
 * LineSegment
 **/
/* @GeneratePInvoke */
LineSegment *line_segment_new (void);

/**
 * LogReadyRoutedEventArgs
 **/
/* @GeneratePInvoke */
LogReadyRoutedEventArgs *log_ready_routed_event_args_new (void);

/**
 * Matrix
 **/
/* @GeneratePInvoke */
cairo_matrix_t *matrix_get_matrix_values (Matrix *instance);

/* @GeneratePInvoke */
Matrix *matrix_new (void);

/**
 * Matrix3D
 **/
/* @GeneratePInvoke */
gpointer matrix3_d_get_matrix_values (Matrix3D *instance);

/* @GeneratePInvoke */
Matrix3D *matrix3_d_new (void);

/**
 * Matrix3DProjection
 **/
/* @GeneratePInvoke */
Matrix3DProjection *matrix3_dprojection_new (void);

/**
 * MatrixTransform
 **/
/* @GeneratePInvoke */
MatrixTransform *matrix_transform_new (void);

/**
 * Media
 **/
void media_register_decoder (DecoderInfo *info);

/**
 * MediaAttribute
 **/
/* @GeneratePInvoke */
MediaAttribute *media_attribute_new (void);

/**
 * MediaAttributeCollection
 **/
/* @GeneratePInvoke */
MediaAttribute *media_attribute_collection_get_item_by_name (MediaAttributeCollection *instance, const char *name);

/* @GeneratePInvoke */
MediaAttributeCollection *media_attribute_collection_new (void);

/**
 * MediaBase
 **/
/* @GeneratePInvoke */
MediaBase *media_base_new (void);

/* @GeneratePInvoke */
void media_base_set_source (MediaBase *instance, const char *uri);

/**
 * MediaElement
 **/
/* @GeneratePInvoke */
MediaElement *media_element_new (void);

/* @GeneratePInvoke */
void media_element_pause (MediaElement *instance);

/* @GeneratePInvoke */
void media_element_play (MediaElement *instance);

/* @GeneratePInvoke */
void media_element_report_error_occurred (MediaElement *instance, const char *args);

/* @GeneratePInvoke */
IMediaDemuxer *media_element_set_demuxer_source (MediaElement *instance, void *context, CloseDemuxerCallback close_demuxer, GetDiagnosticAsyncCallback get_diagnostic, GetFrameAsyncCallback get_sample, OpenDemuxerAsyncCallback open_demuxer, SeekAsyncCallback seek, SwitchMediaStreamAsyncCallback switch_media_stream);

/* @GeneratePInvoke */
void media_element_set_stream_source (MediaElement *instance, ManagedStreamCallbacks *stream);

/* @GeneratePInvoke */
void media_element_stop (MediaElement *instance);

/**
 * MediaFrame
 **/
void media_frame_add_state (MediaFrame *instance, int state);

guint8 *media_frame_get_buffer (MediaFrame *instance);

guint32 media_frame_get_buf_len (MediaFrame *instance);

gint32 media_frame_get_height (MediaFrame *instance);

guint64 media_frame_get_pts (MediaFrame *instance);

gint32 media_frame_get_width (MediaFrame *instance);

bool media_frame_is_key_frame (MediaFrame *instance);

/* @GeneratePInvoke */
MediaFrame *media_frame_new (IMediaStream *stream, guint8 *buffer, guint32 buflen, guint64 pts, bool keyframe);

void media_frame_set_buffer (MediaFrame *instance, guint8 *value);

void media_frame_set_buf_len (MediaFrame *instance, guint32 value);

void media_frame_set_data_stride (MediaFrame *instance, guint8 *a, guint8 *b, guint8 *c, guint8 *d);

void media_frame_set_decoder_specific_data (MediaFrame *instance, void *value);

void media_frame_set_height (MediaFrame *instance, gint32 value);

void media_frame_set_pts (MediaFrame *instance, guint64 value);

void media_frame_set_src_slide_h (MediaFrame *instance, int value);

void media_frame_set_src_slide_y (MediaFrame *instance, int value);

void media_frame_set_src_stride (MediaFrame *instance, int a, int b, int c, int d);

void media_frame_set_width (MediaFrame *instance, gint32 value);

/**
 * MoonWindow
 **/
/* @GeneratePInvoke */
bool moon_window_get_transparent (MoonWindow *instance);

/* @GeneratePInvoke */
void moon_window_set_transparent (MoonWindow *instance, bool flag);

/**
 * MoonWindowGtk
 **/
/* @GeneratePInvoke */
void *moon_window_gtk_get_native_widget (MoonWindowGtk *instance);

/* @GeneratePInvoke */
MoonWindowGtk *moon_window_gtk_new (bool fullscreen, int w, int h, MoonWindow *parent, Surface *surface);

/**
 * MouseButtonEventArgs
 **/
/* @GeneratePInvoke */
MouseButtonEventArgs *mouse_button_event_args_new (void);

/**
 * MouseEventArgs
 **/
/* @GeneratePInvoke */
void mouse_event_args_get_position (MouseEventArgs *instance, UIElement *relative_to, double *x, double *y);

/* @GeneratePInvoke */
StylusInfo *mouse_event_args_get_stylus_info (MouseEventArgs *instance);

/* @GeneratePInvoke */
StylusPointCollection *mouse_event_args_get_stylus_points (MouseEventArgs *instance, UIElement *ink_presenter);

/* @GeneratePInvoke */
MouseEventArgs *mouse_event_args_new (void);

/**
 * MouseWheelEventArgs
 **/
/* @GeneratePInvoke */
int mouse_wheel_event_args_get_wheel_delta (MouseWheelEventArgs *instance);

/* @GeneratePInvoke */
MouseWheelEventArgs *mouse_wheel_event_args_new (void);

/**
 * MultiScaleImage
 **/
/* @GeneratePInvoke */
Point multi_scale_image_element_to_logical_point (MultiScaleImage *instance, Point elementPoint);

void multi_scale_image_emit_image_failed (MultiScaleImage *instance);

void multi_scale_image_emit_image_open_failed (MultiScaleImage *instance);

void multi_scale_image_emit_motion_finished (MultiScaleImage *instance);

void multi_scale_image_handle_dz_parsed (MultiScaleImage *instance);

void multi_scale_image_invalidate_tile_layer (MultiScaleImage *instance, int level, int tilePositionX, int tilePositionY, int tileLayer);

/* @GeneratePInvoke */
Point multi_scale_image_logical_to_element_point (MultiScaleImage *instance, Point logicalPoint);

/* @GeneratePInvoke */
MultiScaleImage *multi_scale_image_new (void);

void multi_scale_image_on_source_property_changed (MultiScaleImage *instance);

/* @GeneratePInvoke */
void multi_scale_image_zoom_about_logical_point (MultiScaleImage *instance, double zoomIncrementFactor, double zoomCenterLogicalX, double zoomCenterLogicalY);

/**
 * MultiScaleSubImage
 **/
gint32 multi_scale_sub_image_get_zindex (MultiScaleSubImage *instance);

/* @GeneratePInvoke */
MultiScaleSubImage *multi_scale_sub_image_new (void);

/**
 * MultiScaleSubImageCollection
 **/
/* @GeneratePInvoke */
MultiScaleSubImageCollection *multi_scale_sub_image_collection_new (void);

/**
 * MultiScaleTileSource
 **/
/* @GeneratePInvoke */
void multi_scale_tile_source_invalidate_tile_layer (MultiScaleTileSource *instance, int level, int tilePositionX, int tilePositionY, int tileLayer);

/* @GeneratePInvoke */
MultiScaleTileSource *multi_scale_tile_source_new (void);

/* @GeneratePInvoke */
void multi_scale_tile_source_set_image_uri_func (MultiScaleTileSource *instance, get_image_uri_func func);

/**
 * NameScope
 **/
NameScope *name_scope_new (void);

/**
 * ObjectAnimationUsingKeyFrames
 **/
/* @GeneratePInvoke */
ObjectAnimationUsingKeyFrames *object_animation_using_key_frames_new (void);

/**
 * ObjectKeyFrame
 **/
/* @GeneratePInvoke */
ObjectKeyFrame *object_key_frame_new (void);

/**
 * ObjectKeyFrameCollection
 **/
/* @GeneratePInvoke */
ObjectKeyFrameCollection *object_key_frame_collection_new (void);

/**
 * OutOfBrowserSettings
 **/
/* @GeneratePInvoke */
OutOfBrowserSettings *out_of_browser_settings_new (void);

/**
 * Panel
 **/
/* @GeneratePInvoke */
Panel *panel_new (void);

/**
 * ParallelTimeline
 **/
/* @GeneratePInvoke */
ParallelTimeline *parallel_timeline_new (void);

/**
 * PasswordBox
 **/
/* @GeneratePInvoke */
PasswordBox *password_box_new (void);

/**
 * Path
 **/
/* @GeneratePInvoke */
Path *path_new (void);

/**
 * PathFigure
 **/
/* @GeneratePInvoke */
PathFigure *path_figure_new (void);

/**
 * PathFigureCollection
 **/
/* @GeneratePInvoke */
PathFigureCollection *path_figure_collection_new (void);

/**
 * PathGeometry
 **/
/* @GeneratePInvoke */
PathGeometry *path_geometry_new (void);

/**
 * PathSegment
 **/
/* @GeneratePInvoke */
PathSegment *path_segment_new (void);

/**
 * PathSegmentCollection
 **/
/* @GeneratePInvoke */
PathSegmentCollection *path_segment_collection_new (void);

/**
 * PixelShader
 **/
/* @GeneratePInvoke */
PixelShader *pixel_shader_new (void);

/**
 * PlaneProjection
 **/
/* @GeneratePInvoke */
PlaneProjection *plane_projection_new (void);

/**
 * PointAnimation
 **/
/* @GeneratePInvoke */
PointAnimation *point_animation_new (void);

/**
 * PointAnimationUsingKeyFrames
 **/
/* @GeneratePInvoke */
PointAnimationUsingKeyFrames *point_animation_using_key_frames_new (void);

/**
 * PointCollection
 **/
/* @GeneratePInvoke */
PointCollection *point_collection_new (void);

/**
 * PointKeyFrame
 **/
/* @GeneratePInvoke */
PointKeyFrame *point_key_frame_new (void);

/**
 * PointKeyFrameCollection
 **/
/* @GeneratePInvoke */
PointKeyFrameCollection *point_key_frame_collection_new (void);

/**
 * PolyBezierSegment
 **/
/* @GeneratePInvoke */
PolyBezierSegment *poly_bezier_segment_new (void);

void poly_bezier_segment_set_points (PolyBezierSegment *instance, PointCollection *points);

/**
 * Polygon
 **/
/* @GeneratePInvoke */
Polygon *polygon_new (void);

/**
 * Polyline
 **/
/* @GeneratePInvoke */
Polyline *polyline_new (void);

/**
 * PolyLineSegment
 **/
/* @GeneratePInvoke */
PolyLineSegment *poly_line_segment_new (void);

/**
 * PolyQuadraticBezierSegment
 **/
/* @GeneratePInvoke */
PolyQuadraticBezierSegment *poly_quadratic_bezier_segment_new (void);

/**
 * Popup
 **/
/* @GeneratePInvoke */
Popup *popup_new (void);

/**
 * PowerEase
 **/
/* @GeneratePInvoke */
double power_ease_ease_in_core (PowerEase *instance, double normalizedTime);

/* @GeneratePInvoke */
PowerEase *power_ease_new (void);

/**
 * Projection
 **/
/* @GeneratePInvoke */
Projection *projection_new (void);

/**
 * PropertyChangedEventArgs
 **/
/* @GeneratePInvoke */
int property_changed_event_args_get_id (PropertyChangedEventArgs *instance);

/* @GeneratePInvoke */
Value *property_changed_event_args_get_new_value (PropertyChangedEventArgs *instance);

/* @GeneratePInvoke */
Value *property_changed_event_args_get_old_value (PropertyChangedEventArgs *instance);

/* @GeneratePInvoke */
DependencyProperty *property_changed_event_args_get_property (PropertyChangedEventArgs *instance);

/**
 * QuadraticBezierSegment
 **/
/* @GeneratePInvoke */
QuadraticBezierSegment *quadratic_bezier_segment_new (void);

/**
 * QuadraticEase
 **/
/* @GeneratePInvoke */
double quadratic_ease_ease_in_core (QuadraticEase *instance, double normalizedTime);

/* @GeneratePInvoke */
QuadraticEase *quadratic_ease_new (void);

/**
 * QuarticEase
 **/
/* @GeneratePInvoke */
double quartic_ease_ease_in_core (QuarticEase *instance, double normalizedTime);

/* @GeneratePInvoke */
QuarticEase *quartic_ease_new (void);

/**
 * QuinticEase
 **/
/* @GeneratePInvoke */
double quintic_ease_ease_in_core (QuinticEase *instance, double normalizedTime);

/* @GeneratePInvoke */
QuinticEase *quintic_ease_new (void);

/**
 * RadialGradientBrush
 **/
/* @GeneratePInvoke */
RadialGradientBrush *radial_gradient_brush_new (void);

/**
 * Rectangle
 **/
/* @GeneratePInvoke */
Rectangle *rectangle_new (void);

/**
 * RectangleGeometry
 **/
/* @GeneratePInvoke */
RectangleGeometry *rectangle_geometry_new (void);

/**
 * RenderingEventArgs
 **/
/* @GeneratePInvoke */
TimeSpan rendering_event_args_get_rendering_time (RenderingEventArgs *instance);

/**
 * ResourceDictionary
 **/
/* @GeneratePInvoke */
bool resource_dictionary_add_with_error (ResourceDictionary *instance, const char *key, Value *value, MoonError *error);

/* @GeneratePInvoke */
bool resource_dictionary_clear (ResourceDictionary *instance);

/* @GeneratePInvoke */
bool resource_dictionary_contains_key (ResourceDictionary *instance, const char *key);

/* @GeneratePInvoke */
Value *resource_dictionary_get (ResourceDictionary *instance, const char *key, bool *exists);

/* @GeneratePInvoke */
bool resource_dictionary_remove (ResourceDictionary *instance, const char *key);

/* @GeneratePInvoke */
ResourceDictionary *resource_dictionary_new (void);

/* @GeneratePInvoke */
bool resource_dictionary_set (ResourceDictionary *instance, const char *key, Value *value);

/**
 * ResourceDictionaryCollection
 **/
/* @GeneratePInvoke */
ResourceDictionaryCollection *resource_dictionary_collection_new (void);

/**
 * ResourceDictionaryIterator
 **/
/* @GeneratePInvoke */
const char *resource_dictionary_iterator_get_current_key (ResourceDictionaryIterator *instance, MoonError *error);

/**
 * RotateTransform
 **/
/* @GeneratePInvoke */
RotateTransform *rotate_transform_new (void);

/**
 * RoutedEventArgs
 **/
/* @GeneratePInvoke */
bool routed_event_args_get_handled (RoutedEventArgs *instance);

/* @GeneratePInvoke */
DependencyObject *routed_event_args_get_source (RoutedEventArgs *instance);

/* @GeneratePInvoke */
RoutedEventArgs *routed_event_args_new (void);

/* @GeneratePInvoke */
void routed_event_args_set_handled (RoutedEventArgs *instance, bool handled);

/* @GeneratePInvoke */
void routed_event_args_set_source (RoutedEventArgs *instance, DependencyObject *el);

/**
 * RowDefinition
 **/
/* @GeneratePInvoke */
RowDefinition *row_definition_new (void);

/**
 * RowDefinitionCollection
 **/
/* @GeneratePInvoke */
RowDefinitionCollection *row_definition_collection_new (void);

/**
 * Run
 **/
/* @GeneratePInvoke */
Run *run_new (void);

/**
 * ScaleTransform
 **/
/* @GeneratePInvoke */
ScaleTransform *scale_transform_new (void);

/**
 * Setter
 **/
/* @GeneratePInvoke */
Setter *setter_new (void);

/**
 * SetterBase
 **/
/* @GeneratePInvoke */
SetterBase *setter_base_new (void);

/**
 * SetterBaseCollection
 **/
/* @GeneratePInvoke */
SetterBaseCollection *setter_base_collection_new (void);

/**
 * ShaderEffect
 **/
/* @GeneratePInvoke */
ShaderEffect *shader_effect_new (void);

/**
 * Shape
 **/
/* @GeneratePInvoke */
Transform *shape_get_geometry_transform (Shape *instance);

/* @GeneratePInvoke */
Shape *shape_new (void);

/**
 * SineEase
 **/
/* @GeneratePInvoke */
double sine_ease_ease_in_core (SineEase *instance, double normalizedTime);

/* @GeneratePInvoke */
SineEase *sine_ease_new (void);

/**
 * SizeChangedEventArgs
 **/
/* @GeneratePInvoke */
SizeChangedEventArgs *size_changed_event_args_new (void);

/**
 * SkewTransform
 **/
/* @GeneratePInvoke */
SkewTransform *skew_transform_new (void);

/**
 * SolidColorBrush
 **/
/* @GeneratePInvoke */
SolidColorBrush *solid_color_brush_new (void);

/**
 * SplineColorKeyFrame
 **/
/* @GeneratePInvoke */
SplineColorKeyFrame *spline_color_key_frame_new (void);

/**
 * SplineDoubleKeyFrame
 **/
/* @GeneratePInvoke */
SplineDoubleKeyFrame *spline_double_key_frame_new (void);

/**
 * SplinePointKeyFrame
 **/
/* @GeneratePInvoke */
SplinePointKeyFrame *spline_point_key_frame_new (void);

/**
 * Storyboard
 **/
/* @GeneratePInvoke */
bool storyboard_begin_with_error (Storyboard *instance, MoonError *error);

/* @GeneratePInvoke */
int storyboard_get_current_state (Storyboard *instance);

/* @GeneratePInvoke */
TimeSpan storyboard_get_current_time (Storyboard *instance);

/* @GeneratePInvoke */
DependencyProperty *storyboard_get_target_dependency_property (Storyboard *instance);

/* @GeneratePInvoke */
void storyboard_pause_with_error (Storyboard *instance, MoonError *error);

/* @GeneratePInvoke */
void storyboard_resume_with_error (Storyboard *instance, MoonError *error);

/* @GeneratePInvoke */
void storyboard_seek_aligned_to_last_tick_with_error (Storyboard *instance, TimeSpan timespan, MoonError *error);

/* @GeneratePInvoke */
void storyboard_seek_with_error (Storyboard *instance, TimeSpan timespan, MoonError *error);

/* @GeneratePInvoke */
void storyboard_skip_to_fill_with_error (Storyboard *instance, MoonError *error);

/* @GeneratePInvoke */
void storyboard_stop_with_error (Storyboard *instance, MoonError *error);

/* @GeneratePInvoke */
Storyboard *storyboard_new (void);

/**
 * Stroke
 **/
/* @GeneratePInvoke */
bool stroke_hit_test (Stroke *instance, StylusPointCollection *stylusPoints);

/* @GeneratePInvoke */
Stroke *stroke_new (void);

/**
 * StrokeCollection
 **/
/* @GeneratePInvoke */
StrokeCollection *stroke_collection_hit_test (StrokeCollection *instance, StylusPointCollection *stylusPoints);

/* @GeneratePInvoke */
StrokeCollection *stroke_collection_new (void);

/**
 * Style
 **/
/* @GeneratePInvoke */
void style_seal (Style *instance);

/* @GeneratePInvoke */
Style *style_new (void);

/**
 * StylusInfo
 **/
/* @GeneratePInvoke */
StylusInfo *stylus_info_new (void);

/**
 * StylusPoint
 **/
/* @GeneratePInvoke */
double stylus_point_get_pressure_factor (StylusPoint *instance);

/* @GeneratePInvoke */
double stylus_point_get_x (StylusPoint *instance);

/* @GeneratePInvoke */
double stylus_point_get_y (StylusPoint *instance);

/* @GeneratePInvoke */
void stylus_point_set_pressure_factor (StylusPoint *instance, double factor);

/* @GeneratePInvoke */
void stylus_point_set_x (StylusPoint *instance, double x);

/* @GeneratePInvoke */
void stylus_point_set_y (StylusPoint *instance, double y);

/* @GeneratePInvoke */
StylusPoint *stylus_point_new (void);

/**
 * StylusPointCollection
 **/
/* @GeneratePInvoke */
double stylus_point_collection_add_stylus_points (StylusPointCollection *instance, StylusPointCollection *stylusPointCollection);

/* @GeneratePInvoke */
StylusPointCollection *stylus_point_collection_new (void);

/**
 * Surface
 **/
/* @GeneratePInvoke */
void surface_attach (Surface *instance, UIElement *toplevel);

/* @GeneratePInvoke */
Downloader *surface_create_downloader (Surface *instance);

/* @GeneratePInvoke */
void surface_emit_error (Surface *instance, int number, int code, const char *message);

/* @GeneratePInvoke */
Color *surface_get_background_color (Surface *instance);

/* @GeneratePInvoke */
UIElement *surface_get_focused_element (Surface *instance);

/* @GeneratePInvoke */
bool surface_get_full_screen (Surface *instance);

/* @GeneratePInvoke */
TimeManager *surface_get_time_manager (Surface *instance);

/* @GeneratePInvoke */
UIElement *surface_get_toplevel (Surface *instance);

/* @GeneratePInvoke */
int surface_get_user_initiated_counter (Surface *instance);

MoonWindow *surface_get_window (Surface *instance);

/* @GeneratePInvoke */
double surface_get_zoom_factor (Surface *instance);

/* @GeneratePInvoke */
bool surface_in_main_thread (void);

/* @GeneratePInvoke */
bool surface_is_loaded (Surface *instance);

/* @GeneratePInvoke */
bool surface_is_user_initiated_event (Surface *instance);

/* @GeneratePInvoke */
bool surface_is_version_supported (const char *version);

/* @GeneratePInvoke */
void surface_paint (Surface *instance, cairo_t *ctx, int x, int y, int width, int height);

/* @GeneratePInvoke */
void surface_resize (Surface *instance, int width, int height);

/* @GeneratePInvoke */
void surface_set_full_screen (Surface *instance, bool value);

/* @GeneratePInvoke */
Surface *surface_new (MoonWindow *window);

/**
 * TabNavigationWalker
 **/
/* @GeneratePInvoke */
bool tab_navigation_walker_focus (UIElement *element, bool forwards);

/**
 * TextBlock
 **/
/* @GeneratePInvoke */
TextBlock *text_block_new (void);

/**
 * TextBox
 **/
/* @GeneratePInvoke */
TextBox *text_box_new (void);

/**
 * TextBoxBase
 **/
/* @GeneratePInvoke */
void text_box_base_on_got_focus (TextBoxBase *instance, RoutedEventArgs *args);

/* @GeneratePInvoke */
void text_box_base_on_key_down (TextBoxBase *instance, KeyEventArgs *args);

/* @GeneratePInvoke */
void text_box_base_on_key_up (TextBoxBase *instance, KeyEventArgs *args);

/* @GeneratePInvoke */
void text_box_base_on_lost_focus (TextBoxBase *instance, RoutedEventArgs *args);

/* @GeneratePInvoke */
void text_box_base_on_mouse_left_button_down (TextBoxBase *instance, MouseButtonEventArgs *args);

/* @GeneratePInvoke */
void text_box_base_on_mouse_left_button_up (TextBoxBase *instance, MouseButtonEventArgs *args);

/* @GeneratePInvoke */
void text_box_base_on_mouse_move (TextBoxBase *instance, MouseEventArgs *args);

/* @GeneratePInvoke */
void text_box_base_post_on_key_down (TextBoxBase *instance, KeyEventArgs *args);

/* @GeneratePInvoke */
void text_box_base_select_all (TextBoxBase *instance);

/* @GeneratePInvoke */
bool text_box_base_select_with_error (TextBoxBase *instance, int start, int length, MoonError *error);

/**
 * TextBoxView
 **/
/* @GeneratePInvoke */
TextBoxView *text_box_view_new (void);

/**
 * TextChangedEventArgs
 **/
/* @GeneratePInvoke */
TextChangedEventArgs *text_changed_event_args_new (void);

/**
 * TileBrush
 **/
/* @GeneratePInvoke */
TileBrush *tile_brush_new (void);

/**
 * Timeline
 **/
/* @GeneratePInvoke */
DependencyObject *timeline_get_manual_target (Timeline *instance);

/* @GeneratePInvoke */
void timeline_set_manual_target (Timeline *instance, DependencyObject *o);

/* @GeneratePInvoke */
Timeline *timeline_new (void);

/**
 * TimelineCollection
 **/
/* @GeneratePInvoke */
TimelineCollection *timeline_collection_new (void);

/**
 * TimelineGroup
 **/
/* @GeneratePInvoke */
TimelineGroup *timeline_group_new (void);

/**
 * TimelineMarker
 **/
/* @GeneratePInvoke */
TimelineMarker *timeline_marker_new (void);

/**
 * TimelineMarkerCollection
 **/
/* @GeneratePInvoke */
TimelineMarkerCollection *timeline_marker_collection_new (void);

/**
 * TimelineMarkerRoutedEventArgs
 **/
/* @GeneratePInvoke */
TimelineMarker *timeline_marker_routed_event_args_get_marker (TimelineMarkerRoutedEventArgs *instance);

/* @GeneratePInvoke */
TimelineMarkerRoutedEventArgs *timeline_marker_routed_event_args_new (TimelineMarker *marker);

/**
 * TimeManager
 **/
/* @GeneratePInvoke */
void time_manager_add_dispatcher_call (TimeManager *instance, TickCallHandler handler, EventObject *tick_data);

/* @GeneratePInvoke */
void time_manager_add_tick_call (TimeManager *instance, TickCallHandler handler, EventObject *tick_data);

guint time_manager_add_timeout (TimeManager *instance, gint priority, guint ms_interval, GSourceFunc func, gpointer timeout_data);

/* @GeneratePInvoke */
int time_manager_get_maximum_refresh_rate (TimeManager *instance);

/* @GeneratePInvoke */
void time_manager_remove_tick_call (TimeManager *instance, TickCallHandler handler, EventObject *tick_data);

void time_manager_remove_timeout (TimeManager *instance, guint timeout_id);

/* @GeneratePInvoke */
void time_manager_set_maximum_refresh_rate (TimeManager *instance, int hz);

/**
 * TouchDevice
 **/
/* @GeneratePInvoke */
UIElement *touch_device_get_directly_over (TouchDevice *instance);

/* @GeneratePInvoke */
int touch_device_get_id (TouchDevice *instance);

/* @GeneratePInvoke */
void touch_device_set_directly_over (TouchDevice *instance, UIElement *element);

/* @GeneratePInvoke */
void touch_device_set_id (TouchDevice *instance, int id);

/* @GeneratePInvoke */
TouchDevice *touch_device_new (void);

/**
 * TouchPoint
 **/
/* @GeneratePInvoke */
int touch_point_get_action (TouchPoint *instance);

/* @GeneratePInvoke */
Point *touch_point_get_position (TouchPoint *instance);

/* @GeneratePInvoke */
Size *touch_point_get_size (TouchPoint *instance);

/* @GeneratePInvoke */
TouchDevice *touch_point_get_touch_device (TouchPoint *instance);

/* @GeneratePInvoke */
void touch_point_set_action (TouchPoint *instance, int action);

/* @GeneratePInvoke */
void touch_point_set_position (TouchPoint *instance, Point *position);

/* @GeneratePInvoke */
void touch_point_set_size (TouchPoint *instance, Size *size);

/* @GeneratePInvoke */
void touch_point_set_touch_device (TouchPoint *instance, TouchDevice *device);

/* @GeneratePInvoke */
TouchPoint *touch_point_new (void);

/**
 * TouchPointCollection
 **/
/* @GeneratePInvoke */
TouchPointCollection *touch_point_collection_new (void);

/**
 * Transform
 **/
/* @GeneratePInvoke */
Transform *transform_new (void);

/**
 * TransformCollection
 **/
/* @GeneratePInvoke */
TransformCollection *transform_collection_new (void);

/**
 * TransformGroup
 **/
/* @GeneratePInvoke */
TransformGroup *transform_group_new (void);

/**
 * TranslateTransform
 **/
/* @GeneratePInvoke */
TranslateTransform *translate_transform_new (void);

/**
 * TriggerAction
 **/
void trigger_action_fire (TriggerAction *instance);

/* @GeneratePInvoke */
TriggerAction *trigger_action_new (void);

/**
 * TriggerActionCollection
 **/
/* @GeneratePInvoke */
TriggerActionCollection *trigger_action_collection_new (void);

/**
 * TriggerBase
 **/
/* @GeneratePInvoke */
TriggerBase *trigger_base_new (void);

/**
 * TriggerCollection
 **/
/* @GeneratePInvoke */
TriggerCollection *trigger_collection_new (void);

/**
 * Types
 **/
/* @GeneratePInvoke */
Type *types_find (Types *instance, int type);

/* @GeneratePInvoke */
int types_register_type (Types *instance, const char *name, void *gc_handle, int parent, bool is_interface, bool ctor_visible, int *interfaces, int interface_count);

/* @GeneratePInvoke */
Types *types_new (void);

/**
 * UIElement
 **/
/* @GeneratePInvoke */
void uielement_arrange (UIElement *instance, Rect finalRect);

/* @GeneratePInvoke */
bool uielement_capture_mouse (UIElement *instance);

/* @GeneratePInvoke */
void uielement_element_added (UIElement *instance, UIElement *obj);

/* @GeneratePInvoke */
void uielement_element_removed (UIElement *instance, UIElement *obj);

/* @GeneratePInvoke */
void uielement_find_elements_in_host_coordinates_p (UIElement *instance, Point p, HitTestCollection *uielement_list);

/* @GeneratePInvoke */
void uielement_find_elements_in_host_coordinates_r (UIElement *instance, Rect p, HitTestCollection *uielement_list);

/* @GeneratePInvoke */
bool uielement_focus (UIElement *instance, bool recurse);

/* @GeneratePInvoke */
Size uielement_get_desired_size (UIElement *instance);

/* @GeneratePInvoke */
Size uielement_get_render_size (UIElement *instance);

/* @GeneratePInvoke */
DependencyObject *uielement_get_subtree_object (UIElement *instance);

/* @GeneratePInvoke */
GeneralTransform *uielement_get_transform_to_uielement_with_error (UIElement *instance, UIElement *to_element, MoonError *error);

/* @GeneratePInvoke */
UIElement *uielement_get_visual_parent (UIElement *instance);

void uielement_invalidate (UIElement *instance);

/* @GeneratePInvoke */
void uielement_invalidate_arrange (UIElement *instance);

/* @GeneratePInvoke */
void uielement_invalidate_measure (UIElement *instance);

/* @GeneratePInvoke */
void uielement_measure (UIElement *instance, Size availableSize);

/* @GeneratePInvoke */
void uielement_release_mouse_capture (UIElement *instance);

/* @GeneratePInvoke */
void uielement_set_subtree_object (UIElement *instance, DependencyObject *value);

/* @GeneratePInvoke */
void uielement_update_layout (UIElement *instance);

/**
 * UIElementCollection
 **/
/* @GeneratePInvoke */
UIElementCollection *uielement_collection_new (void);

/**
 * UnmanagedMatrix
 **/
/* @GeneratePInvoke */
UnmanagedMatrix *unmanaged_matrix_new (void);

/**
 * UnmanagedMatrix3D
 **/
/* @GeneratePInvoke */
UnmanagedMatrix3D *unmanaged_matrix3_d_new (void);

/**
 * Uri
 **/
bool uri_equals (const Uri *left, const Uri *right);

/* @GeneratePInvoke */
void uri_free (Uri *instance);

guint uri_get_hash_code (Uri *instance);

/* @GeneratePInvoke */
bool uri_parse (Uri *instance, const char *uri, bool allow_trailing_sep);

/**
 * UserControl
 **/
/* @GeneratePInvoke */
UserControl *user_control_new (void);

/**
 * VideoBrush
 **/
/* @GeneratePInvoke */
void video_brush_set_source (VideoBrush *instance, MediaElement *source);

/* @GeneratePInvoke */
VideoBrush *video_brush_new (void);

/**
 * VideoStream
 **/
guint32 video_stream_get_height (VideoStream *instance);

guint32 video_stream_get_width (VideoStream *instance);

/* @GeneratePInvoke */
VideoStream *video_stream_new (Media *media, int codec_id, guint32 width, guint32 height, guint64 duration, gpointer extra_data, guint32 extra_data_size);

/**
 * VisualBrush
 **/
/* @GeneratePInvoke */
VisualBrush *visual_brush_new (void);

/**
 * WindowSettings
 **/
/* @GeneratePInvoke */
WindowSettings *window_settings_new (void);

/**
 * WriteableBitmap
 **/
/* @GeneratePInvoke */
gpointer writeable_bitmap_initialize_from_bitmap_source (WriteableBitmap *instance, BitmapSource *source);

/* @GeneratePInvoke */
void writeable_bitmap_lock (WriteableBitmap *instance);

/* @GeneratePInvoke */
void writeable_bitmap_render (WriteableBitmap *instance, UIElement *element, Transform *transform);

/* @GeneratePInvoke */
void writeable_bitmap_unlock (WriteableBitmap *instance);

/* @GeneratePInvoke */
WriteableBitmap *writeable_bitmap_new (void);

/**
 * XamlContext
 **/
/* @GeneratePInvoke */
DependencyObject *xaml_context_get_template_binding_source (XamlContext *instance);

/**
 * XamlLoader
 **/
/* @GeneratePInvoke */
Value *xaml_loader_create_from_file_with_error (XamlLoader *instance, const char *xaml, bool create_namescope, int *element_type, MoonError *error);

/* @GeneratePInvoke */
Value *xaml_loader_create_from_string_with_error (XamlLoader *instance, const char *xaml, bool create_namescope, int *element_type, int flags, MoonError *error);

/* @GeneratePInvoke */
XamlContext *xaml_loader_get_context (XamlLoader *instance);

/* @GeneratePInvoke */
Value *xaml_loader_hydrate_from_string_with_error (XamlLoader *instance, const char *xaml, Value *obj, bool create_namescope, int *element_type, int flags, MoonError *error);

/**
 * Xap
 **/
/* @GeneratePInvoke */
char *xap_unpack (const char *fname);


G_END_DECLS

#endif
