Ada计算机图形DirectX之D2D1

----------------------------------------
-- Microsoft DirectX Ada binding lib  --
-- File : D2D1.ads                    --
-- Translator:Dongfeng.Gu,2018/10/31  --
-- Mail: [email protected]                --
-- Progress:100%                      --
----------------------------------------


with win32;                            use win32;
with win32.Winerror;
with win32.winnt;                      use win32.winnt;
with win32.windef;                     use win32.windef;
with win32.Wingdi;                     use win32.Wingdi;
with win32.Objbase;                    use win32.Objbase;
with win32.rpcdce;                     use win32.rpcdce;
with Interfaces.C;

with audiodefs;                        use audiodefs;
with D2DBaseTypes;                     use D2DBaseTypes;
with DXGIFormat;                       use DXGIFormat;
with DXGI;                             use DXGI;

with DWrite;                           use DWrite;
with wincodec;                         use wincodec;

package D2D1 is

   subtype UINT32 is win32.UINT;
   subtype LPUINT32 is win32.PUINT;
   type LPCWCHAR is access constant win32.WCHAR;
   type LPCFloat is access constant FLOAT;

   type ID2D1Geometry;
   type LPID2D1Geometry is access all ID2D1Geometry;
   type LPLPID2D1Geometry is access all LPID2D1Geometry;
   subtype LPD2D1Geometry is LPID2D1Geometry;
   subtype LPLPD2D1Geometry is LPLPID2D1Geometry;

   type ID2D1Brush;
   type LPID2D1Brush is access all ID2D1Brush;
   type LPLPID2D1Brush is access all LPID2D1Brush;
   subtype LPD2D1Brush is LPID2D1Brush;
   subtype LPLPD2D1Brush is LPLPID2D1Brush;

   type ID2D1Resource;
   type LPID2D1Resource is access all ID2D1Resource;
   type LPLPID2D1Resource is access all LPID2D1Resource;
   subtype LPD2D1Resource is LPID2D1Resource;
   subtype LPLPD2D1Resource is LPLPID2D1Resource;

   type ID2D1Factory;
   type LPID2D1Factory is access all ID2D1Factory;
   type LPLPID2D1Factory is access all LPID2D1Factory;
   subtype LPD2D1Factory is LPID2D1Factory;
   subtype LPLPD2D1Factory is LPLPID2D1Factory;


   type ID2D1Bitmap;
   type LPID2D1Bitmap is access all ID2D1Bitmap;
   type LPLPID2D1Bitmap is access all LPID2D1Bitmap;
   subtype LPD2D1Bitmap is LPID2D1Bitmap;
   subtype LPLPD2D1Bitmap is LPLPID2D1Bitmap;

   type ID2D1RenderTarget;
   type LPID2D1RenderTarget is access all ID2D1RenderTarget;
   type LPLPID2D1RenderTarget is access all LPID2D1RenderTarget;
   subtype LPD2D1RenderTarget is LPID2D1RenderTarget;
   subtype LPLPD2D1RenderTarget is LPLPID2D1RenderTarget;

   type ID2D1GradientStopCollection;
   type LPID2D1GradientStopCollection is access all ID2D1GradientStopCollection;
   type LPLPID2D1GradientStopCollection is access all LPID2D1GradientStopCollection;
   subtype LPD2D1GradientStopCollection is LPID2D1GradientStopCollection;
   subtype LPLPD2D1GradientStopCollection is LPLPID2D1GradientStopCollection;

   type ID2D1BitmapBrush;
   type LPID2D1BitmapBrush is access all ID2D1BitmapBrush;
   type LPLPID2D1BitmapBrush is access all LPID2D1BitmapBrush;
   subtype LPD2D1BitmapBrush is LPID2D1BitmapBrush;
   subtype LPLPD2D1BitmapBrush is LPLPID2D1BitmapBrush;


   type ID2D1SolidColorBrush;
   type LPID2D1SolidColorBrush is access all ID2D1SolidColorBrush;
   type LPLPID2D1SolidColorBrush is access all LPID2D1SolidColorBrush;
   subtype LPD2D1SolidColorBrush is LPID2D1SolidColorBrush;
   subtype LPLPD2D1SolidColorBrush is LPLPID2D1SolidColorBrush;

   type ID2D1LinearGradientBrush;
   type LPID2D1LinearGradientBrush is access all ID2D1LinearGradientBrush;
   type LPLPID2D1LinearGradientBrush is access all LPID2D1LinearGradientBrush;
   subtype LPD2D1LinearGradientBrush is LPID2D1LinearGradientBrush;
   subtype LPLPD2D1LinearGradientBrush is LPLPID2D1LinearGradientBrush;

   type ID2D1RadialGradientBrush;
   type LPID2D1RadialGradientBrush is access all ID2D1RadialGradientBrush;
   type LPLPID2D1RadialGradientBrush is access all LPID2D1RadialGradientBrush;
   subtype LPD2D1RadialGradientBrush is LPID2D1RadialGradientBrush;
   subtype LPLPD2D1RadialGradientBrush is LPLPID2D1RadialGradientBrush;

   type ID2D1StrokeStyle;
   type LPID2D1StrokeStyle is access all ID2D1StrokeStyle;
   type LPLPID2D1StrokeStyle is access all LPID2D1StrokeStyle;
   subtype LPD2D1StrokeStyle is LPID2D1StrokeStyle;
   subtype LPLPD2D1StrokeStyle is LPLPID2D1StrokeStyle;



   type ID2D1SimplifiedGeometrySink;
   type LPID2D1SimplifiedGeometrySink is access all ID2D1SimplifiedGeometrySink;
   type LPLPID2D1SimplifiedGeometrySink is access all LPID2D1SimplifiedGeometrySink;
   subtype LPD2D1SimplifiedGeometrySink is LPID2D1SimplifiedGeometrySink;
   subtype LPLPD2D1SimplifiedGeometrySink is LPLPID2D1SimplifiedGeometrySink;

   type ID2D1TessellationSink;
   type LPID2D1TessellationSink is access all ID2D1TessellationSink;
   type LPLPID2D1TessellationSink is access all LPID2D1TessellationSink;
   subtype LPD2D1TessellationSink is LPID2D1TessellationSink;
   subtype LPLPD2D1TessellationSink is LPLPID2D1TessellationSink;

   type ID2D1RectangleGeometry;
   type LPID2D1RectangleGeometry is access all ID2D1RectangleGeometry;
   type LPLPID2D1RectangleGeometry is access all LPID2D1RectangleGeometry;
   subtype LPD2D1RectangleGeometry is LPID2D1RectangleGeometry;
   subtype LPLPD2D1RectangleGeometry is LPLPID2D1RectangleGeometry;


   type ID2D1RoundedRectangleGeometry;
   type LPID2D1RoundedRectangleGeometry is access all ID2D1RoundedRectangleGeometry;
   type LPLPID2D1RoundedRectangleGeometry is access all LPID2D1RoundedRectangleGeometry;
   subtype LPD2D1RoundedRectangleGeometry is LPID2D1RoundedRectangleGeometry;
   subtype LPLPD2D1RoundedRectangleGeometry is LPLPID2D1RoundedRectangleGeometry;

   type ID2D1EllipseGeometry;
   type LPID2D1EllipseGeometry is access all ID2D1EllipseGeometry;
   type LPLPID2D1EllipseGeometry is access all LPID2D1EllipseGeometry;
   subtype LPD2D1EllipseGeometry is LPID2D1EllipseGeometry;
   subtype LPLPD2D1EllipseGeometry is LPLPID2D1EllipseGeometry;

   type ID2D1GeometryGroup;
   type LPID2D1GeometryGroup is access all ID2D1GeometryGroup;
   type LPLPID2D1GeometryGroup is access all LPID2D1GeometryGroup;
   subtype LPD2D1GeometryGroup is LPID2D1GeometryGroup;
   subtype LPLPD2D1GeometryGroup is LPLPID2D1GeometryGroup;

   type ID2D1TransformedGeometry;
   type LPID2D1TransformedGeometry is access all ID2D1TransformedGeometry;
   type LPLPID2D1TransformedGeometry is access all LPID2D1TransformedGeometry;
   subtype LPD2D1TransformedGeometry is LPID2D1TransformedGeometry;
   subtype LPLPD2D1TransformedGeometry is LPLPID2D1TransformedGeometry;



   type ID2D1GeometrySink;
   type LPID2D1GeometrySink is access all ID2D1GeometrySink;
   type LPLPID2D1GeometrySink is access all LPID2D1GeometrySink;
   subtype LPD2D1GeometrySink is LPID2D1GeometrySink;
   subtype LPLPD2D1GeometrySink is LPLPID2D1GeometrySink;


   type ID2D1PathGeometry;
   type LPID2D1PathGeometry is access all ID2D1PathGeometry;
   type LPLPID2D1PathGeometry is access all LPID2D1PathGeometry;
   subtype LPD2D1PathGeometry is LPID2D1PathGeometry;
   subtype LPLPD2D1PathGeometry is LPLPID2D1PathGeometry;

   type ID2D1Mesh;
   type LPID2D1Mesh is access all ID2D1Mesh;
   type LPLPID2D1Mesh is access all LPID2D1Mesh;
   subtype LPD2D1Mesh is LPID2D1Mesh;
   subtype LPLPD2D1Mesh is LPLPID2D1Mesh;

   type ID2D1Layer;
   type LPID2D1Layer is access all ID2D1Layer;
   type LPLPID2D1Layer is access all LPID2D1Layer;
   subtype LPD2D1Layer is LPID2D1Layer;
   subtype LPLPD2D1Layer is LPLPID2D1Layer;

   type ID2D1DrawingStateBlock;
   type LPID2D1DrawingStateBlock is access all ID2D1DrawingStateBlock;
   type LPLPID2D1DrawingStateBlock is access all LPID2D1DrawingStateBlock;
   subtype LPD2D1DrawingStateBlock is LPID2D1DrawingStateBlock;
   subtype LPLPD2D1DrawingStateBlock is LPLPID2D1DrawingStateBlock;

   type ID2D1BitmapRenderTarget;
   type LPID2D1BitmapRenderTarget is access all ID2D1BitmapRenderTarget;
   type LPLPID2D1BitmapRenderTarget is access all LPID2D1BitmapRenderTarget;
   subtype LPD2D1BitmapRenderTarget is LPID2D1BitmapRenderTarget;
   subtype LPLPD2D1BitmapRenderTarget is LPLPID2D1BitmapRenderTarget;

   type ID2D1HwndRenderTarget;
   type LPID2D1HwndRenderTarget is access all ID2D1HwndRenderTarget;
   type LPLPID2D1HwndRenderTarget is access all LPID2D1HwndRenderTarget;
   subtype LPD2D1HwndRenderTarget is LPID2D1HwndRenderTarget;
   subtype LPLPD2D1HwndRenderTarget is LPLPID2D1HwndRenderTarget;

   type ID2D1GdiInteropRenderTarget;
   type LPID2D1GdiInteropRenderTarget is access all ID2D1GdiInteropRenderTarget;
   type LPLPID2D1GdiInteropRenderTarget is access all LPID2D1GdiInteropRenderTarget;
   subtype LPD2D1GdiInteropRenderTarget is LPID2D1GdiInteropRenderTarget;
   subtype LPLPD2D1GdiInteropRenderTarget is LPLPID2D1GdiInteropRenderTarget;


   type ID2D1DCRenderTarget;
   type LPID2D1DCRenderTarget is access all ID2D1DCRenderTarget;
   type LPLPID2D1DCRenderTarget is access all LPID2D1DCRenderTarget;
   subtype LPD2D1DCRenderTarget is LPID2D1DCRenderTarget;
   subtype LPLPD2D1DCRenderTarget is LPLPID2D1DCRenderTarget;


   D2D1_INVALID_TAG : constant := ULONGLONG'Last;

   D2D1_DEFAULT_FLATTENING_TOLERANCE : constant := (0.25);

   type D2D1_ALPHA_MODE is (D2D1_ALPHA_MODE_UNKNOWN,
                            D2D1_ALPHA_MODE_PREMULTIPLIED,
                            D2D1_ALPHA_MODE_STRAIGHT,
                            D2D1_ALPHA_MODE_IGNORE,
                            D2D1_ALPHA_MODE_FORCE_DWORD);
   for D2D1_ALPHA_MODE use (D2D1_ALPHA_MODE_UNKNOWN=>0,
                            D2D1_ALPHA_MODE_PREMULTIPLIED=>1,
                            D2D1_ALPHA_MODE_STRAIGHT=>2,
                            D2D1_ALPHA_MODE_IGNORE=>3,
                            D2D1_ALPHA_MODE_FORCE_DWORD=>16#ffffffff#);

   type D2D1_GAMMA is (D2D1_GAMMA_2_2,
                       D2D1_GAMMA_1_0,
                       D2D1_GAMMA_FORCE_DWORD);
   for D2D1_GAMMA use (D2D1_GAMMA_2_2=>0,
                       D2D1_GAMMA_1_0=>1,
                       D2D1_GAMMA_FORCE_DWORD=>16#ffffffff#);

   type D2D1_OPACITY_MASK_CONTENT is (D2D1_OPACITY_MASK_CONTENT_GRAPHICS,
                                      D2D1_OPACITY_MASK_CONTENT_TEXT_NATURAL,
                                      D2D1_OPACITY_MASK_CONTENT_TEXT_GDI_COMPATIBLE,
                                      D2D1_OPACITY_MASK_CONTENT_FORCE_DWORD);
   for D2D1_OPACITY_MASK_CONTENT use (D2D1_OPACITY_MASK_CONTENT_GRAPHICS=>0,
                                      D2D1_OPACITY_MASK_CONTENT_TEXT_NATURAL=>1,
                                      D2D1_OPACITY_MASK_CONTENT_TEXT_GDI_COMPATIBLE=>2,
                                      D2D1_OPACITY_MASK_CONTENT_FORCE_DWORD=>16#ffffffff#);

   type D2D1_EXTEND_MODE is (D2D1_EXTEND_MODE_CLAMP,
                             D2D1_EXTEND_MODE_WRAP,
                             D2D1_EXTEND_MODE_MIRROR,
                             D2D1_EXTEND_MODE_FORCE_DWORD);
   for D2D1_EXTEND_MODE use (D2D1_EXTEND_MODE_CLAMP=>0,
                             D2D1_EXTEND_MODE_WRAP=>1,
                             D2D1_EXTEND_MODE_MIRROR=>2,
                             D2D1_EXTEND_MODE_FORCE_DWORD=>16#ffffffff#);

   type D2D1_ANTIALIAS_MODE is (D2D1_ANTIALIAS_MODE_PER_PRIMITIVE,
                                D2D1_ANTIALIAS_MODE_ALIASED,
                                D2D1_ANTIALIAS_MODE_FORCE_DWORD);
   for D2D1_ANTIALIAS_MODE use (D2D1_ANTIALIAS_MODE_PER_PRIMITIVE=>0,
                                D2D1_ANTIALIAS_MODE_ALIASED=>1,
                                D2D1_ANTIALIAS_MODE_FORCE_DWORD=>16#ffffffff#);

   type D2D1_TEXT_ANTIALIAS_MODE is (D2D1_TEXT_ANTIALIAS_MODE_DEFAULT,
                                     D2D1_TEXT_ANTIALIAS_MODE_CLEARTYPE,
                                     D2D1_TEXT_ANTIALIAS_MODE_GRAYSCALE,
                                     D2D1_TEXT_ANTIALIAS_MODE_ALIASED,
                                     D2D1_TEXT_ANTIALIAS_MODE_FORCE_DWORD);
   for D2D1_TEXT_ANTIALIAS_MODE use (D2D1_TEXT_ANTIALIAS_MODE_DEFAULT=>0,
                                     D2D1_TEXT_ANTIALIAS_MODE_CLEARTYPE=>1,
                                     D2D1_TEXT_ANTIALIAS_MODE_GRAYSCALE=>2,
                                     D2D1_TEXT_ANTIALIAS_MODE_ALIASED=>3,
                                     D2D1_TEXT_ANTIALIAS_MODE_FORCE_DWORD=>16#ffffffff#);

   type D2D1_BITMAP_INTERPOLATION_MODE is (D2D1_BITMAP_INTERPOLATION_MODE_NEAREST_NEIGHBOR,
                                           D2D1_BITMAP_INTERPOLATION_MODE_LINEAR,
                                           D2D1_BITMAP_INTERPOLATION_MODE_FORCE_DWORD);
   for D2D1_BITMAP_INTERPOLATION_MODE use (D2D1_BITMAP_INTERPOLATION_MODE_NEAREST_NEIGHBOR=>0,
                                           D2D1_BITMAP_INTERPOLATION_MODE_LINEAR=>1,
                                           D2D1_BITMAP_INTERPOLATION_MODE_FORCE_DWORD=>16#ffffffff#);

   type D2D1_DRAW_TEXT_OPTIONS is (D2D1_DRAW_TEXT_OPTIONS_NONE,
                                   D2D1_DRAW_TEXT_OPTIONS_NO_SNAP,
                                   D2D1_DRAW_TEXT_OPTIONS_CLIP,

                                   D2D1_DRAW_TEXT_OPTIONS_FORCE_DWORD);
   for D2D1_DRAW_TEXT_OPTIONS use (D2D1_DRAW_TEXT_OPTIONS_NONE=>16#00000000#,
                                   D2D1_DRAW_TEXT_OPTIONS_NO_SNAP=>16#00000001#,
                                   D2D1_DRAW_TEXT_OPTIONS_CLIP=>16#00000002#,

                                   D2D1_DRAW_TEXT_OPTIONS_FORCE_DWORD=>16#ffffffff#);

   type D2D1_PIXEL_FORMAT is record
      format: DXGI_FORMAT;
      alphaMode: D2D1_ALPHA_MODE;
   end record;
   type LPD2D1_PIXEL_FORMAT is access all D2D1_PIXEL_FORMAT;
   type LPCD2D1_PIXEL_FORMAT is access constant D2D1_PIXEL_FORMAT;


   subtype D2D1_POINT_2U is D2D_POINT_2U;

   subtype D2D1_POINT_2F is D2D_POINT_2F;

   subtype D2D1_RECT_F is D2D_RECT_F;

   subtype D2D1_RECT_U is D2D_RECT_U;

   subtype D2D1_SIZE_F is D2D_SIZE_F;

   subtype D2D1_SIZE_U is D2D_SIZE_U;

   subtype D2D1_COLOR_F is D2D_COLOR_F;

   subtype D2D1_MATRIX_3X2_F is D2D_MATRIX_3X2_F;

   subtype D2D1_TAG is win32.UINT64;

   type LPD2D1_TAG is access all D2D1_TAG;

   type LPD2D1_MATRIX_3X2_F is access all D2D1_MATRIX_3X2_F;
   type LPCD2D1_MATRIX_3X2_F is access constant D2D1_MATRIX_3X2_F;

   type LPD2D1_COLOR_F is access all D2D1_COLOR_F;
   type LPCD2D1_COLOR_F is access constant D2D1_COLOR_F;

   type LPD2D1_RECT_F is access all D2D1_RECT_F;
   type LPCD2D1_RECT_F is access constant D2D1_RECT_F;

   type LPD2D1_POINT_2F is access all D2D1_POINT_2F;
   type LPCD2D1_POINT_2F is access constant D2D1_POINT_2F;

   type LPCD2D1_SIZE_F is access constant D2D1_SIZE_F;
   type LPCD2D1_SIZE_U is access constant D2D1_SIZE_U;


   type D2D1_BITMAP_PROPERTIES is record
      pixelFormat: D2D1_PIXEL_FORMAT;
      dpiX: FLOAT;
      dpiY: FLOAT;
   end record;
   type LPD2D1_BITMAP_PROPERTIES is access all D2D1_BITMAP_PROPERTIES;
   type LPCD2D1_BITMAP_PROPERTIES is access constant D2D1_BITMAP_PROPERTIES;



   type D2D1_GRADIENT_STOP is record
      position: FLOAT;
      color: D2D1_COLOR_F;
   end record;
   type LPD2D1_GRADIENT_STOP is access all D2D1_GRADIENT_STOP;
   type LPCD2D1_GRADIENT_STOP is access constant D2D1_GRADIENT_STOP;



   type D2D1_BRUSH_PROPERTIES is record
      opacity: FLOAT;
      transform: D2D1_MATRIX_3X2_F;
   end record;
   type LPD2D1_BRUSH_PROPERTIES is access all D2D1_BRUSH_PROPERTIES;
   type LPCD2D1_BRUSH_PROPERTIES is access constant D2D1_BRUSH_PROPERTIES;



   type D2D1_BITMAP_BRUSH_PROPERTIES is record
      extendModeX: D2D1_EXTEND_MODE;
      extendModeY: D2D1_EXTEND_MODE;
      interpolationMode: D2D1_BITMAP_INTERPOLATION_MODE;
   end record;
   type LPD2D1_BITMAP_BRUSH_PROPERTIES is access all D2D1_BITMAP_BRUSH_PROPERTIES;
   type LPCD2D1_BITMAP_BRUSH_PROPERTIES is access constant D2D1_BITMAP_BRUSH_PROPERTIES;



   type D2D1_LINEAR_GRADIENT_BRUSH_PROPERTIES is record
      startPoint: D2D1_POINT_2F;
      endPoint: D2D1_POINT_2F;
   end record;
   type LPD2D1_LINEAR_GRADIENT_BRUSH_PROPERTIES is access all D2D1_LINEAR_GRADIENT_BRUSH_PROPERTIES;
   type LPCD2D1_LINEAR_GRADIENT_BRUSH_PROPERTIES is access constant D2D1_LINEAR_GRADIENT_BRUSH_PROPERTIES;



   type D2D1_RADIAL_GRADIENT_BRUSH_PROPERTIES is record
      center: D2D1_POINT_2F;
      gradientOriginOffset: D2D1_POINT_2F;
      radiusX: FLOAT;
      radiusY: FLOAT;
   end record;
   type LPD2D1_RADIAL_GRADIENT_BRUSH_PROPERTIES is access all D2D1_RADIAL_GRADIENT_BRUSH_PROPERTIES;
   type LPCD2D1_RADIAL_GRADIENT_BRUSH_PROPERTIES is access constant D2D1_RADIAL_GRADIENT_BRUSH_PROPERTIES;



   type D2D1_ARC_SIZE is (D2D1_ARC_SIZE_SMALL,
                          D2D1_ARC_SIZE_LARGE,
                          D2D1_ARC_SIZE_FORCE_DWORD);
   for D2D1_ARC_SIZE use (D2D1_ARC_SIZE_SMALL=>0,
                          D2D1_ARC_SIZE_LARGE=>1,
                          D2D1_ARC_SIZE_FORCE_DWORD=>16#ffffffff#);

   type D2D1_CAP_STYLE is (D2D1_CAP_STYLE_FLAT,
                           D2D1_CAP_STYLE_SQUARE,
                           D2D1_CAP_STYLE_ROUND,
                           D2D1_CAP_STYLE_TRIANGLE,
                           D2D1_CAP_STYLE_FORCE_DWORD);
   for D2D1_CAP_STYLE use (D2D1_CAP_STYLE_FLAT=>0,
                           D2D1_CAP_STYLE_SQUARE=>1,
                           D2D1_CAP_STYLE_ROUND=>2,
                           D2D1_CAP_STYLE_TRIANGLE=>3,
                           D2D1_CAP_STYLE_FORCE_DWORD=>16#ffffffff#);

   type D2D1_DASH_STYLE is (D2D1_DASH_STYLE_SOLID,
                            D2D1_DASH_STYLE_DASH,
                            D2D1_DASH_STYLE_DOT,
                            D2D1_DASH_STYLE_DASH_DOT,
                            D2D1_DASH_STYLE_DASH_DOT_DOT,
                            D2D1_DASH_STYLE_CUSTOM,
                            D2D1_DASH_STYLE_FORCE_DWORD);
   for D2D1_DASH_STYLE use (D2D1_DASH_STYLE_SOLID=>0,
                            D2D1_DASH_STYLE_DASH=>1,
                            D2D1_DASH_STYLE_DOT=>2,
                            D2D1_DASH_STYLE_DASH_DOT=>3,
                            D2D1_DASH_STYLE_DASH_DOT_DOT=>4,
                            D2D1_DASH_STYLE_CUSTOM=>5,
                            D2D1_DASH_STYLE_FORCE_DWORD=>16#ffffffff#);

   type D2D1_LINE_JOIN is (D2D1_LINE_JOIN_MITER,
                           D2D1_LINE_JOIN_BEVEL,
                           D2D1_LINE_JOIN_ROUND,
                           D2D1_LINE_JOIN_MITER_OR_BEVEL,
                           D2D1_LINE_JOIN_FORCE_DWORD);
   for D2D1_LINE_JOIN use (D2D1_LINE_JOIN_MITER=>0,
                           D2D1_LINE_JOIN_BEVEL=>1,
                           D2D1_LINE_JOIN_ROUND=>2,
                           D2D1_LINE_JOIN_MITER_OR_BEVEL=>3,
                           D2D1_LINE_JOIN_FORCE_DWORD=>16#ffffffff#);

   type D2D1_COMBINE_MODE is (D2D1_COMBINE_MODE_UNION,
                              D2D1_COMBINE_MODE_INTERSECT,
                              D2D1_COMBINE_MODE_XOR,
                              D2D1_COMBINE_MODE_EXCLUDE,
                              D2D1_COMBINE_MODE_FORCE_DWORD);
   for D2D1_COMBINE_MODE use (D2D1_COMBINE_MODE_UNION=>0,
                              D2D1_COMBINE_MODE_INTERSECT=>1,
                              D2D1_COMBINE_MODE_XOR=>2,
                              D2D1_COMBINE_MODE_EXCLUDE=>3,
                              D2D1_COMBINE_MODE_FORCE_DWORD=>16#ffffffff#);

   type D2D1_GEOMETRY_RELATION is (D2D1_GEOMETRY_RELATION_UNKNOWN,
                                   D2D1_GEOMETRY_RELATION_DISJOINT,
                                   D2D1_GEOMETRY_RELATION_IS_CONTAINED,
                                   D2D1_GEOMETRY_RELATION_CONTAINS,
                                   D2D1_GEOMETRY_RELATION_OVERLAP,
                                   D2D1_GEOMETRY_RELATION_FORCE_DWORD);
   for D2D1_GEOMETRY_RELATION use (D2D1_GEOMETRY_RELATION_UNKNOWN=>0,
                                   D2D1_GEOMETRY_RELATION_DISJOINT=>1,
                                   D2D1_GEOMETRY_RELATION_IS_CONTAINED=>2,
                                   D2D1_GEOMETRY_RELATION_CONTAINS=>3,
                                   D2D1_GEOMETRY_RELATION_OVERLAP=>4,
                                   D2D1_GEOMETRY_RELATION_FORCE_DWORD=>16#ffffffff#);
   type LPD2D1_GEOMETRY_RELATION is access all D2D1_GEOMETRY_RELATION;

   type D2D1_GEOMETRY_SIMPLIFICATION_OPTION is (D2D1_GEOMETRY_SIMPLIFICATION_OPTION_CUBICS_AND_LINES,
                                                D2D1_GEOMETRY_SIMPLIFICATION_OPTION_LINES,
                                                D2D1_GEOMETRY_SIMPLIFICATION_OPTION_FORCE_DWORD);
   for D2D1_GEOMETRY_SIMPLIFICATION_OPTION use (D2D1_GEOMETRY_SIMPLIFICATION_OPTION_CUBICS_AND_LINES=>0,
                                                D2D1_GEOMETRY_SIMPLIFICATION_OPTION_LINES=>1,
                                                D2D1_GEOMETRY_SIMPLIFICATION_OPTION_FORCE_DWORD=>16#ffffffff#);

   type D2D1_FIGURE_BEGIN is (D2D1_FIGURE_BEGIN_FILLED,
                              D2D1_FIGURE_BEGIN_HOLLOW,
                              D2D1_FIGURE_BEGIN_FORCE_DWORD);
   for D2D1_FIGURE_BEGIN use (D2D1_FIGURE_BEGIN_FILLED=>0,
                              D2D1_FIGURE_BEGIN_HOLLOW=>1,
                              D2D1_FIGURE_BEGIN_FORCE_DWORD=>16#ffffffff#);

   type D2D1_FIGURE_END is (D2D1_FIGURE_END_OPEN,
                            D2D1_FIGURE_END_CLOSED,
                            D2D1_FIGURE_END_FORCE_DWORD);
   for D2D1_FIGURE_END use (D2D1_FIGURE_END_OPEN=>0,
                            D2D1_FIGURE_END_CLOSED=>1,
                            D2D1_FIGURE_END_FORCE_DWORD=>16#ffffffff#);

   type D2D1_BEZIER_SEGMENT is record
      point1: D2D1_POINT_2F;
      point2: D2D1_POINT_2F;
      point3: D2D1_POINT_2F;
   end record;
   type LPD2D1_BEZIER_SEGMENT is access all D2D1_BEZIER_SEGMENT;
   type LPCD2D1_BEZIER_SEGMENT is access constant D2D1_BEZIER_SEGMENT;



   type D2D1_TRIANGLE is record
      point1: D2D1_POINT_2F;
      point2: D2D1_POINT_2F;
      point3: D2D1_POINT_2F;
   end record;
   type LPD2D1_TRIANGLE is access all D2D1_TRIANGLE;
   type LPCD2D1_TRIANGLE is access constant D2D1_TRIANGLE;



   type D2D1_PATH_SEGMENT is (D2D1_PATH_SEGMENT_NONE,
                              D2D1_PATH_SEGMENT_FORCE_UNSTROKED,
                              D2D1_PATH_SEGMENT_FORCE_ROUND_LINE_JOIN,
                              D2D1_PATH_SEGMENT_FORCE_DWORD);
   for D2D1_PATH_SEGMENT use (D2D1_PATH_SEGMENT_NONE=>16#00000000#,
                              D2D1_PATH_SEGMENT_FORCE_UNSTROKED=>16#00000001#,
                              D2D1_PATH_SEGMENT_FORCE_ROUND_LINE_JOIN=>16#00000002#,
                              D2D1_PATH_SEGMENT_FORCE_DWORD=>16#ffffffff#);


   type D2D1_SWEEP_DIRECTION is (D2D1_SWEEP_DIRECTION_COUNTER_CLOCKWISE,
                                 D2D1_SWEEP_DIRECTION_CLOCKWISE,
                                 D2D1_SWEEP_DIRECTION_FORCE_DWORD);
   for D2D1_SWEEP_DIRECTION use (D2D1_SWEEP_DIRECTION_COUNTER_CLOCKWISE=>0,
                                 D2D1_SWEEP_DIRECTION_CLOCKWISE=>1,
                                 D2D1_SWEEP_DIRECTION_FORCE_DWORD=>16#ffffffff#);

   type D2D1_FILL_MODE is (D2D1_FILL_MODE_ALTERNATE,
                           D2D1_FILL_MODE_WINDING,
                           D2D1_FILL_MODE_FORCE_DWORD);
   for D2D1_FILL_MODE use (D2D1_FILL_MODE_ALTERNATE=>0,
                           D2D1_FILL_MODE_WINDING=>1,
                           D2D1_FILL_MODE_FORCE_DWORD=>16#ffffffff#);

   type D2D1_ARC_SEGMENT is record
      point: D2D1_POINT_2F;
      size: D2D1_SIZE_F;
      rotationAngle: FLOAT;
      sweepDirection: D2D1_SWEEP_DIRECTION;
      arcSize: D2D1_ARC_SIZE;
   end record;
   type LPD2D1_ARC_SEGMENT is access all D2D1_ARC_SEGMENT;
   type LPCD2D1_ARC_SEGMENT is access constant D2D1_ARC_SEGMENT;



   type D2D1_QUADRATIC_BEZIER_SEGMENT is record
      point1: D2D1_POINT_2F;
      point2: D2D1_POINT_2F;
   end record;
   type LPD2D1_QUADRATIC_BEZIER_SEGMENT is access all D2D1_QUADRATIC_BEZIER_SEGMENT;
   type LPCD2D1_QUADRATIC_BEZIER_SEGMENT is access constant D2D1_QUADRATIC_BEZIER_SEGMENT;


   type D2D1_ELLIPSE is record
      point: D2D1_POINT_2F;
      radiusX: FLOAT;
      radiusY: FLOAT;
   end record;
   type LPD2D1_ELLIPSE is access all D2D1_ELLIPSE;
   type LPCD2D1_ELLIPSE is access constant D2D1_ELLIPSE;


   type D2D1_ROUNDED_RECT is record
      rect: D2D1_RECT_F;
      radiusX: FLOAT;
      radiusY: FLOAT;
   end record;
   type LPD2D1_ROUNDED_RECT is access all D2D1_ROUNDED_RECT;
   type LPCD2D1_ROUNDED_RECT is access constant D2D1_ROUNDED_RECT;



   type D2D1_STROKE_STYLE_PROPERTIES is record
      startCap: D2D1_CAP_STYLE;
      endCap: D2D1_CAP_STYLE;
      dashCap: D2D1_CAP_STYLE;
      lineJoin: D2D1_LINE_JOIN;
      miterLimit: FLOAT;
      dashStyle: D2D1_DASH_STYLE;
      dashOffset: FLOAT;
   end record;
   type LPD2D1_STROKE_STYLE_PROPERTIES is access all D2D1_STROKE_STYLE_PROPERTIES;
   type LPCD2D1_STROKE_STYLE_PROPERTIES is access constant D2D1_STROKE_STYLE_PROPERTIES;



   type D2D1_LAYER_OPTIONS is (D2D1_LAYER_OPTIONS_NONE,
                               D2D1_LAYER_OPTIONS_INITIALIZE_FOR_CLEARTYPE,
                               D2D1_LAYER_OPTIONS_FORCE_DWORD);
   for D2D1_LAYER_OPTIONS use (D2D1_LAYER_OPTIONS_NONE=>16#00000000#,
                               D2D1_LAYER_OPTIONS_INITIALIZE_FOR_CLEARTYPE=>16#00000001#,
                               D2D1_LAYER_OPTIONS_FORCE_DWORD=>16#ffffffff#);

   type D2D1_LAYER_PARAMETERS is record
      contentBounds: D2D1_RECT_F;
      geometricMask:LPID2D1Geometry;
      maskAntialiasMode: D2D1_ANTIALIAS_MODE;
      maskTransform: D2D1_MATRIX_3X2_F;
      opacity: FLOAT;
      opacityBrush:LPID2D1Brush;
      layerOptions: D2D1_LAYER_OPTIONS;
   end record;
   type LPD2D1_LAYER_PARAMETERS is access all D2D1_LAYER_PARAMETERS;
   type LPCD2D1_LAYER_PARAMETERS is access constant D2D1_LAYER_PARAMETERS;



   type D2D1_WINDOW_STATE is (D2D1_WINDOW_STATE_NONE,
                              D2D1_WINDOW_STATE_OCCLUDED,
                              D2D1_WINDOW_STATE_FORCE_DWORD);
   for D2D1_WINDOW_STATE use (D2D1_WINDOW_STATE_NONE=>16#0000000#,
                              D2D1_WINDOW_STATE_OCCLUDED=>16#0000001#,
                              D2D1_WINDOW_STATE_FORCE_DWORD=>16#ffffffff#);

   --function DEFINE_ENUM_FLAG_OPERATORS(:D2D1_RENDER_TARGET_USAGE) return DEFINE_ENUM_FLAG_OPERATORS with Import,Convention=>stdcall,external_name=>"DEFINE_ENUM_FLAG_OPERATORS";

   type D2D1_RENDER_TARGET_TYPE is (D2D1_RENDER_TARGET_TYPE_DEFAULT,
                                    D2D1_RENDER_TARGET_TYPE_SOFTWARE,
                                    D2D1_RENDER_TARGET_TYPE_HARDWARE,
                                    D2D1_RENDER_TARGET_TYPE_FORCE_DWORD);
   for D2D1_RENDER_TARGET_TYPE use (D2D1_RENDER_TARGET_TYPE_DEFAULT=>0,
                                    D2D1_RENDER_TARGET_TYPE_SOFTWARE=>1,
                                    D2D1_RENDER_TARGET_TYPE_HARDWARE=>2,
                                    D2D1_RENDER_TARGET_TYPE_FORCE_DWORD=>16#ffffffff#);

   type D2D1_FEATURE_LEVEL is (D2D1_FEATURE_LEVEL_DEFAULT,
                               D2D1_FEATURE_LEVEL_9,
                               D2D1_FEATURE_LEVEL_10,
                               D2D1_FEATURE_LEVEL_FORCE_DWORD);
   for D2D1_FEATURE_LEVEL use (D2D1_FEATURE_LEVEL_DEFAULT=>0,
                               D2D1_FEATURE_LEVEL_9=>16#9100#,
                               D2D1_FEATURE_LEVEL_10=>16#a000#,
                               D2D1_FEATURE_LEVEL_FORCE_DWORD=>16#ffffffff#);

   type D2D1_RENDER_TARGET_USAGE is (D2D1_RENDER_TARGET_USAGE_NONE,
                                     D2D1_RENDER_TARGET_USAGE_FORCE_BITMAP_REMOTING,
                                     D2D1_RENDER_TARGET_USAGE_GDI_COMPATIBLE,
                                     D2D1_RENDER_TARGET_USAGE_FORCE_DWORD);
   for D2D1_RENDER_TARGET_USAGE use (D2D1_RENDER_TARGET_USAGE_NONE=>16#00000000#,
                                     D2D1_RENDER_TARGET_USAGE_FORCE_BITMAP_REMOTING=>16#00000001#,
                                     D2D1_RENDER_TARGET_USAGE_GDI_COMPATIBLE=>16#00000002#,
                                     D2D1_RENDER_TARGET_USAGE_FORCE_DWORD=>16#ffffffff#);

   --function DEFINE_ENUM_FLAG_OPERATORS(:D2D1_PRESENT_OPTIONS) return DEFINE_ENUM_FLAG_OPERATORS with Import,Convention=>stdcall,external_name=>"DEFINE_ENUM_FLAG_OPERATORS";

   type D2D1_PRESENT_OPTIONS is (D2D1_PRESENT_OPTIONS_NONE,
                                 D2D1_PRESENT_OPTIONS_RETAIN_CONTENTS,
                                 D2D1_PRESENT_OPTIONS_IMMEDIATELY,
                                 D2D1_PRESENT_OPTIONS_FORCE_DWORD);
   for D2D1_PRESENT_OPTIONS use (D2D1_PRESENT_OPTIONS_NONE=>16#00000000#,
                                 D2D1_PRESENT_OPTIONS_RETAIN_CONTENTS=>16#00000001#,
                                 D2D1_PRESENT_OPTIONS_IMMEDIATELY=>16#00000002#,
                                 D2D1_PRESENT_OPTIONS_FORCE_DWORD=>16#ffffffff#);

   --function STDMETHOD(:QueryInterface) return DEFINE_ENUM_FLAG_OPERATORS with Import,Convention=>stdcall,external_name=>"STDMETHOD";

   type D2D1_RENDER_TARGET_PROPERTIES is record
      typ: D2D1_RENDER_TARGET_TYPE;
      pixelFormat: D2D1_PIXEL_FORMAT;
      dpiX: FLOAT;
      dpiY: FLOAT;
      usage: D2D1_RENDER_TARGET_USAGE;
      minLevel: D2D1_FEATURE_LEVEL;
   end record;
   type LPD2D1_RENDER_TARGET_PROPERTIES is access all D2D1_RENDER_TARGET_PROPERTIES;
   type LPCD2D1_RENDER_TARGET_PROPERTIES is access constant D2D1_RENDER_TARGET_PROPERTIES;



   type D2D1_HWND_RENDER_TARGET_PROPERTIES is record
      hwnd: windef.HWND;
      pixelSize: D2D1_SIZE_U;
      presentOptions: D2D1_PRESENT_OPTIONS;
   end record;
   type LPD2D1_HWND_RENDER_TARGET_PROPERTIES is access all D2D1_HWND_RENDER_TARGET_PROPERTIES;
   type LPCD2D1_HWND_RENDER_TARGET_PROPERTIES is access constant D2D1_HWND_RENDER_TARGET_PROPERTIES;



   type D2D1_COMPATIBLE_RENDER_TARGET_OPTIONS is (D2D1_COMPATIBLE_RENDER_TARGET_OPTIONS_NONE,
                                                  D2D1_COMPATIBLE_RENDER_TARGET_OPTIONS_GDI_COMPATIBLE,
                                                  D2D1_COMPATIBLE_RENDER_TARGET_OPTIONS_FORCE_DWORD);
   for D2D1_COMPATIBLE_RENDER_TARGET_OPTIONS use (D2D1_COMPATIBLE_RENDER_TARGET_OPTIONS_NONE=>16#00000000#,
                                                  D2D1_COMPATIBLE_RENDER_TARGET_OPTIONS_GDI_COMPATIBLE=>16#00000001#,
                                                  D2D1_COMPATIBLE_RENDER_TARGET_OPTIONS_FORCE_DWORD=>16#ffffffff#);

   type D2D1_DRAWING_STATE_DESCRIPTION is record
      antialiasMode: D2D1_ANTIALIAS_MODE;
      textAntialiasMode: D2D1_TEXT_ANTIALIAS_MODE;
      tag1: D2D1_TAG;
      tag2: D2D1_TAG;
      transform: D2D1_MATRIX_3X2_F;
   end record;
   type LPD2D1_DRAWING_STATE_DESCRIPTION is access all D2D1_DRAWING_STATE_DESCRIPTION;
   type LPCD2D1_DRAWING_STATE_DESCRIPTION is access constant D2D1_DRAWING_STATE_DESCRIPTION;



   type D2D1_DC_INITIALIZE_MODE is (D2D1_DC_INITIALIZE_MODE_COPY,
                                    D2D1_DC_INITIALIZE_MODE_CLEAR,
                                    D2D1_DC_INITIALIZE_MODE_FORCE_DWORD);
   for D2D1_DC_INITIALIZE_MODE use (D2D1_DC_INITIALIZE_MODE_COPY=>0,
                                    D2D1_DC_INITIALIZE_MODE_CLEAR=>1,
                                    D2D1_DC_INITIALIZE_MODE_FORCE_DWORD=>16#ffffffff#);

   type D2D1_DEBUG_LEVEL is (D2D1_DEBUG_LEVEL_NONE,
                             D2D1_DEBUG_LEVEL_ERROR,
                             D2D1_DEBUG_LEVEL_WARNING,
                             D2D1_DEBUG_LEVEL_INFORMATION,
                             D2D1_DEBUG_LEVEL_FORCE_DWORD);
   for D2D1_DEBUG_LEVEL use (D2D1_DEBUG_LEVEL_NONE=>0,
                             D2D1_DEBUG_LEVEL_ERROR=>1,
                             D2D1_DEBUG_LEVEL_WARNING=>2,
                             D2D1_DEBUG_LEVEL_INFORMATION=>3,
                             D2D1_DEBUG_LEVEL_FORCE_DWORD=>16#ffffffff#);

   type D2D1_FACTORY_TYPE is (D2D1_FACTORY_TYPE_SINGLE_THREADED,
                              D2D1_FACTORY_TYPE_MULTI_THREADED,
                              D2D1_FACTORY_TYPE_FORCE_DWORD);
   for D2D1_FACTORY_TYPE use (D2D1_FACTORY_TYPE_SINGLE_THREADED=>0,
                              D2D1_FACTORY_TYPE_MULTI_THREADED=>1,
                              D2D1_FACTORY_TYPE_FORCE_DWORD=>16#ffffffff#);

   type D2D1_FACTORY_OPTIONS is record
      debugLevel: D2D1_DEBUG_LEVEL;
   end record;

   type LPCD2D1_POINT_2U is access constant D2D1_POINT_2U;
   type LPCD2D1_RECT_U is access constant D2D1_RECT_U;

   IID_ID2D1Resource : constant GUID:=uuidof("2cd90691-12e2-11dc-9fed-001143a055f9");

   type ID2D1Resource is record
      QueryInterface:access function(THIS:LPID2D1Resource;riid:REFIID;ppvObj:LPLPvoid) return HRESULT with Convention=>Stdcall;
      AddRef:access function(THIS:LPID2D1Resource) return ULONG with Convention=>Stdcall;
      Release:access function(THIS:LPID2D1Resource) return ULONG with Convention=>Stdcall;
      GetFactory:access function(THIS:LPID2D1Resource;factory:LPLPID2D1Factory) return void with Convention=>Stdcall;
   end record;

   IID_ID2D1Bitmap : constant GUID:=uuidof("a2296057-ea42-4099-983b-539fb6505426");

   type ID2D1Bitmap is record
      QueryInterface:access function(THIS:LPID2D1Bitmap;riid:REFIID;ppvObj:LPLPvoid) return HRESULT with Convention=>Stdcall;
      AddRef:access function(THIS:LPID2D1Bitmap) return ULONG with Convention=>Stdcall;
      Release:access function(THIS:LPID2D1Bitmap) return ULONG with Convention=>Stdcall;
      GetFactory:access function(THIS:LPID2D1Bitmap;factory:LPLPID2D1Factory) return void with Convention=>Stdcall;
      GetSize:access function(THIS:LPID2D1Bitmap) return D2D1_SIZE_F with Convention=>Stdcall;
      GetPixelSize:access function(THIS:LPID2D1Bitmap) return D2D1_SIZE_U with Convention=>Stdcall;
      GetPixelFormat:access function(THIS:LPID2D1Bitmap) return D2D1_PIXEL_FORMAT with Convention=>Stdcall;
      GetDpi:access function(THIS:LPID2D1Bitmap;dpiX:LPFLOAT;dpiY:LPFLOAT) return void with Convention=>Stdcall;
      CopyFromBitmap:access function(THIS:LPID2D1Bitmap;destPoint:LPCD2D1_POINT_2U;bitmap:LPID2D1Bitmap;srcRect:LPCD2D1_RECT_U) return HRESULT with Convention=>Stdcall;
      CopyFromRenderTarget:access function(THIS:LPID2D1Bitmap;destPoint:LPCD2D1_POINT_2U;renderTarget:LPID2D1RenderTarget;srcRect:LPCD2D1_RECT_U) return HRESULT with Convention=>Stdcall;
      CopyFromMemory:access function(THIS:LPID2D1Bitmap;dstRect:LPCD2D1_RECT_U;srcData:LPCvoid;pitch:UINT32) return HRESULT with Convention=>Stdcall;
   end record;

   IID_ID2D1GradientStopCollection : constant GUID:=uuidof("2cd906a7-12e2-11dc-9fed-001143a055f9");

   type ID2D1GradientStopCollection is record
      QueryInterface:access function(THIS:LPID2D1GradientStopCollection;riid:REFIID;ppvObj:LPLPvoid) return HRESULT with Convention=>Stdcall;
      AddRef:access function(THIS:LPID2D1GradientStopCollection) return ULONG with Convention=>Stdcall;
      Release:access function(THIS:LPID2D1GradientStopCollection) return ULONG with Convention=>Stdcall;
      GetFactory:access function(THIS:LPID2D1GradientStopCollection;factory:LPLPID2D1Factory) return void with Convention=>Stdcall;
      GetGradientStopCount:access function(THIS:LPID2D1GradientStopCollection) return UINT32 with Convention=>Stdcall;
      GetGradientStops:access function(THIS:LPID2D1GradientStopCollection;gradientStops:LPD2D1_GRADIENT_STOP;gradientStopsCount:UINT) return void with Convention=>Stdcall;
      GetColorInterpolationGamma:access function(THIS:LPID2D1GradientStopCollection) return D2D1_GAMMA with Convention=>Stdcall;
      GetExtendMode:access function(THIS:LPID2D1GradientStopCollection) return D2D1_EXTEND_MODE with Convention=>Stdcall;
   end record;

   IID_ID2D1Brush : constant GUID:=uuidof("2cd906a8-12e2-11dc-9fed-001143a055f9");

   type ID2D1Brush is record
      QueryInterface:access function(THIS:LPID2D1Brush;riid:REFIID;ppvObj:LPLPvoid) return HRESULT with Convention=>Stdcall;
      AddRef:access function(THIS:LPID2D1Brush) return ULONG with Convention=>Stdcall;
      Release:access function(THIS:LPID2D1Brush) return ULONG with Convention=>Stdcall;
      GetFactory:access function(THIS:LPID2D1Brush;factory:LPLPID2D1Factory) return void with Convention=>Stdcall;
      SetOpacity:access function(THIS:LPID2D1Brush;opacity:FLOAT) return void with Convention=>Stdcall;
      SetTransform:access function(THIS:LPID2D1Brush;transform:LPCD2D1_MATRIX_3X2_F) return void with Convention=>Stdcall;
      GetOpacity:access function(THIS:LPID2D1Brush) return FLOAT with Convention=>Stdcall;
      GetTransform:access function(THIS:LPID2D1Brush;transform:LPD2D1_MATRIX_3X2_F) return void with Convention=>Stdcall;
   end record;

   IID_ID2D1BitmapBrush : constant GUID:=uuidof("2cd906aa-12e2-11dc-9fed-001143a055f9");

   type ID2D1BitmapBrush is record
      QueryInterface:access function(THIS:LPID2D1BitmapBrush;riid:REFIID;ppvObj:LPLPvoid) return HRESULT with Convention=>Stdcall;
      AddRef:access function(THIS:LPID2D1BitmapBrush) return ULONG with Convention=>Stdcall;
      Release:access function(THIS:LPID2D1BitmapBrush) return ULONG with Convention=>Stdcall;
      GetFactory:access function(THIS:LPID2D1BitmapBrush;factory:LPLPID2D1Factory) return void with Convention=>Stdcall;
      SetOpacity:access function(THIS:LPID2D1BitmapBrush;opacity:FLOAT) return void with Convention=>Stdcall;
      SetTransform:access function(THIS:LPID2D1BitmapBrush;transform:LPCD2D1_MATRIX_3X2_F) return void with Convention=>Stdcall;
      GetOpacity:access function(THIS:LPID2D1BitmapBrush) return FLOAT with Convention=>Stdcall;
      GetTransform:access function(THIS:LPID2D1BitmapBrush;transform:LPD2D1_MATRIX_3X2_F) return void with Convention=>Stdcall;
      SetExtendModeX:access function(THIS:LPID2D1BitmapBrush;extendModeX:D2D1_EXTEND_MODE) return void with Convention=>Stdcall;
      SetExtendModeY:access function(THIS:LPID2D1BitmapBrush;extendModeY:D2D1_EXTEND_MODE) return void with Convention=>Stdcall;
      SetInterpolationMode:access function(THIS:LPID2D1BitmapBrush;interpolationMode:D2D1_BITMAP_INTERPOLATION_MODE) return void with Convention=>Stdcall;
      SetBitmap:access function(THIS:LPID2D1BitmapBrush;bitmap:LPID2D1Bitmap) return void with Convention=>Stdcall;
      GetExtendModeX:access function(THIS:LPID2D1BitmapBrush) return D2D1_EXTEND_MODE with Convention=>Stdcall;
      GetExtendModeY:access function(THIS:LPID2D1BitmapBrush) return D2D1_EXTEND_MODE with Convention=>Stdcall;
      GetInterpolationMode:access function(THIS:LPID2D1BitmapBrush) return D2D1_BITMAP_INTERPOLATION_MODE with Convention=>Stdcall;
      GetBitmap:access function(THIS:LPID2D1BitmapBrush;bitmap:LPLPID2D1Bitmap) return void with Convention=>Stdcall;
   end record;

   IID_ID2D1SolidColorBrush : constant GUID:=uuidof("2cd906a9-12e2-11dc-9fed-001143a055f9");

   type ID2D1SolidColorBrush is record
      QueryInterface:access function(THIS:LPID2D1SolidColorBrush;riid:REFIID;ppvObj:LPLPvoid) return HRESULT with Convention=>Stdcall;
      AddRef:access function(THIS:LPID2D1SolidColorBrush) return ULONG with Convention=>Stdcall;
      Release:access function(THIS:LPID2D1SolidColorBrush) return ULONG with Convention=>Stdcall;
      GetFactory:access function(THIS:LPID2D1SolidColorBrush;factory:LPLPID2D1Factory) return void with Convention=>Stdcall;
      SetOpacity:access function(THIS:LPID2D1SolidColorBrush;opacity:FLOAT) return void with Convention=>Stdcall;
      SetTransform:access function(THIS:LPID2D1SolidColorBrush;transform:LPCD2D1_MATRIX_3X2_F) return void with Convention=>Stdcall;
      GetOpacity:access function(THIS:LPID2D1SolidColorBrush) return FLOAT with Convention=>Stdcall;
      GetTransform:access function(THIS:LPID2D1SolidColorBrush;transform:LPD2D1_MATRIX_3X2_F) return void with Convention=>Stdcall;
      SetColor:access function(THIS:LPID2D1SolidColorBrush;color:LPCD2D1_COLOR_F) return void with Convention=>Stdcall;
      GetColor:access function(THIS:LPID2D1SolidColorBrush) return D2D1_COLOR_F with Convention=>Stdcall;
   end record;

   IID_ID2D1LinearGradientBrush : constant GUID:=uuidof("2cd906ab-12e2-11dc-9fed-001143a055f9");

   type ID2D1LinearGradientBrush is record
      QueryInterface:access function(THIS:LPID2D1LinearGradientBrush;riid:REFIID;ppvObj:LPLPvoid) return HRESULT with Convention=>Stdcall;
      AddRef:access function(THIS:LPID2D1LinearGradientBrush) return ULONG with Convention=>Stdcall;
      Release:access function(THIS:LPID2D1LinearGradientBrush) return ULONG with Convention=>Stdcall;
      GetFactory:access function(THIS:LPID2D1LinearGradientBrush;factory:LPLPID2D1Factory) return void with Convention=>Stdcall;
      SetOpacity:access function(THIS:LPID2D1LinearGradientBrush;opacity:FLOAT) return void with Convention=>Stdcall;
      SetTransform:access function(THIS:LPID2D1LinearGradientBrush;transform:LPCD2D1_MATRIX_3X2_F) return void with Convention=>Stdcall;
      GetOpacity:access function(THIS:LPID2D1LinearGradientBrush) return FLOAT with Convention=>Stdcall;
      GetTransform:access function(THIS:LPID2D1LinearGradientBrush;transform:LPD2D1_MATRIX_3X2_F) return void with Convention=>Stdcall;
      SetStartPoint:access function(THIS:LPID2D1LinearGradientBrush;startPoint:D2D1_POINT_2F) return void with Convention=>Stdcall;
      SetEndPoint:access function(THIS:LPID2D1LinearGradientBrush;endPoint:D2D1_POINT_2F) return void with Convention=>Stdcall;
      GetStartPoint:access function(THIS:LPID2D1LinearGradientBrush) return D2D1_POINT_2F with Convention=>Stdcall;
      GetEndPoint:access function(THIS:LPID2D1LinearGradientBrush) return D2D1_POINT_2F with Convention=>Stdcall;
      GetGradientStopCollection:access function(THIS:LPID2D1LinearGradientBrush;gradientStopCollection:LPLPID2D1GradientStopCollection) return void with Convention=>Stdcall;
   end record;

   IID_ID2D1RadialGradientBrush : constant GUID:=uuidof("2cd906ac-12e2-11dc-9fed-001143a055f9");

   type ID2D1RadialGradientBrush is record
      QueryInterface:access function(THIS:LPID2D1RadialGradientBrush;riid:REFIID;ppvObj:LPLPvoid) return HRESULT with Convention=>Stdcall;
      AddRef:access function(THIS:LPID2D1RadialGradientBrush) return ULONG with Convention=>Stdcall;
      Release:access function(THIS:LPID2D1RadialGradientBrush) return ULONG with Convention=>Stdcall;
      GetFactory:access function(THIS:LPID2D1RadialGradientBrush;factory:LPLPID2D1Factory) return void with Convention=>Stdcall;
      SetOpacity:access function(THIS:LPID2D1RadialGradientBrush;opacity:FLOAT) return void with Convention=>Stdcall;
      SetTransform:access function(THIS:LPID2D1RadialGradientBrush;transform:LPCD2D1_MATRIX_3X2_F) return void with Convention=>Stdcall;
      GetOpacity:access function(THIS:LPID2D1RadialGradientBrush) return FLOAT with Convention=>Stdcall;
      GetTransform:access function(THIS:LPID2D1RadialGradientBrush;transform:LPD2D1_MATRIX_3X2_F) return void with Convention=>Stdcall;
      SetCenter:access function(THIS:LPID2D1RadialGradientBrush;center:D2D1_POINT_2F) return void with Convention=>Stdcall;
      SetGradientOriginOffset:access function(THIS:LPID2D1RadialGradientBrush;gradientOriginOffset:D2D1_POINT_2F) return void with Convention=>Stdcall;
      SetRadiusX:access function(THIS:LPID2D1RadialGradientBrush;radiusX:FLOAT) return void with Convention=>Stdcall;
      SetRadiusY:access function(THIS:LPID2D1RadialGradientBrush;radiusY:FLOAT) return void with Convention=>Stdcall;
      GetCenter:access function(THIS:LPID2D1RadialGradientBrush) return D2D1_POINT_2F with Convention=>Stdcall;
      GetGradientOriginOffset:access function(THIS:LPID2D1RadialGradientBrush) return D2D1_POINT_2F with Convention=>Stdcall;
      GetRadiusX:access function(THIS:LPID2D1RadialGradientBrush) return FLOAT with Convention=>Stdcall;
      GetRadiusY:access function(THIS:LPID2D1RadialGradientBrush) return FLOAT with Convention=>Stdcall;
      GetGradientStopCollection:access function(THIS:LPID2D1RadialGradientBrush;gradientStopCollection:LPLPID2D1GradientStopCollection) return void with Convention=>Stdcall;
   end record;

   IID_ID2D1StrokeStyle : constant GUID:=uuidof("2cd9069d-12e2-11dc-9fed-001143a055f9");

   type ID2D1StrokeStyle is record
      QueryInterface:access function(THIS:LPID2D1StrokeStyle;riid:REFIID;ppvObj:LPLPvoid) return HRESULT with Convention=>Stdcall;
      AddRef:access function(THIS:LPID2D1StrokeStyle) return ULONG with Convention=>Stdcall;
      Release:access function(THIS:LPID2D1StrokeStyle) return ULONG with Convention=>Stdcall;
      GetFactory:access function(factory:LPLPID2D1Factory) return void with Convention=>Stdcall;
      GetStartCap:access function(THIS:LPID2D1StrokeStyle) return D2D1_CAP_STYLE with Convention=>Stdcall;
      GetEndCap:access function(THIS:LPID2D1StrokeStyle) return D2D1_CAP_STYLE with Convention=>Stdcall;
      GetDashCap:access function(THIS:LPID2D1StrokeStyle) return D2D1_CAP_STYLE with Convention=>Stdcall;
      GetMiterLimit:access function(THIS:LPID2D1StrokeStyle) return FLOAT with Convention=>Stdcall;
      GetLineJoin:access function(THIS:LPID2D1StrokeStyle) return D2D1_LINE_JOIN with Convention=>Stdcall;
      GetDashOffset:access function(THIS:LPID2D1StrokeStyle) return FLOAT with Convention=>Stdcall;
      GetDashStyle:access function(THIS:LPID2D1StrokeStyle) return D2D1_DASH_STYLE with Convention=>Stdcall;
      GetDashesCount:access function(THIS:LPID2D1StrokeStyle) return UINT32 with Convention=>Stdcall;
      GetDashes:access function(THIS:LPID2D1StrokeStyle;dashes:LPFLOAT;dashesCount:UINT) return void with Convention=>Stdcall;
   end record;

   IID_ID2D1Geometry : constant GUID:=uuidof("2cd906a1-12e2-11dc-9fed-001143a055f9");

   type ID2D1Geometry is record
      QueryInterface:access function(THIS:LPID2D1Geometry;riid:REFIID;ppvObj:LPLPvoid) return HRESULT with Convention=>Stdcall;
      AddRef:access function(THIS:LPID2D1Geometry) return ULONG with Convention=>Stdcall;
      Release:access function(THIS:LPID2D1Geometry) return ULONG with Convention=>Stdcall;
      GetFactory:access function(factory:LPLPID2D1Factory) return void with Convention=>Stdcall;
      GetBounds:access function(THIS:LPID2D1Geometry;worldTransform:LPCD2D1_MATRIX_3X2_F;bounds:LPD2D1_RECT_F) return HRESULT with Convention=>Stdcall;
      GetWidenedBounds:access function(THIS:LPID2D1Geometry;strokeWidth:FLOAT;strokeStyle:LPID2D1StrokeStyle;worldTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;bounds:LPD2D1_RECT_F) return HRESULT with Convention=>Stdcall;
      StrokeContainsPoint:access function(THIS:LPID2D1Geometry;point:D2D1_POINT_2F;strokeWidth:FLOAT;strokeStyle:LPID2D1StrokeStyle;worldTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;contains:LPBOOL) return HRESULT with Convention=>Stdcall;
      FillContainsPoint:access function(THIS:LPID2D1Geometry;point:D2D1_POINT_2F;worldTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;contains:LPBOOL) return HRESULT with Convention=>Stdcall;
      CompareWithGeometry:access function(THIS:LPID2D1Geometry;inputGeometry:LPID2D1Geometry;inputGeometryTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;relation:LPD2D1_GEOMETRY_RELATION) return HRESULT with Convention=>Stdcall;
      Simplify:access function(THIS:LPID2D1Geometry;simplificationOption:D2D1_GEOMETRY_SIMPLIFICATION_OPTION;worldTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;geometrySink:LPID2D1SimplifiedGeometrySink) return HRESULT with Convention=>Stdcall;
      Tessellate:access function(THIS:LPID2D1Geometry;worldTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;tessellationSink:LPID2D1TessellationSink) return HRESULT with Convention=>Stdcall;
      CombineWithGeometry:access function(THIS:LPID2D1Geometry;inputGeometry:LPID2D1Geometry;combineMode:D2D1_COMBINE_MODE;inputGeometryTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;geometrySink:LPID2D1SimplifiedGeometrySink) return HRESULT with Convention=>Stdcall;
      Outline:access function(THIS:LPID2D1Geometry;worldTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;geometrySink:LPID2D1SimplifiedGeometrySink) return HRESULT with Convention=>Stdcall;
      ComputeArea:access function(THIS:LPID2D1Geometry;worldTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;area:LPFLOAT) return HRESULT with Convention=>Stdcall;
      ComputeLength:access function(THIS:LPID2D1Geometry;worldTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;length:LPFLOAT) return HRESULT with Convention=>Stdcall;
      ComputePointAtLength:access function(THIS:LPID2D1Geometry;length:FLOAT;worldTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;point:LPD2D1_POINT_2F;unitTangentVector:LPD2D1_POINT_2F) return HRESULT with Convention=>Stdcall;
      Widen:access function(THIS:LPID2D1Geometry;strokeWidth:FLOAT;strokeStyle:LPID2D1StrokeStyle;worldTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;geometrySink:LPID2D1SimplifiedGeometrySink) return HRESULT with Convention=>Stdcall;
   end record;

   IID_ID2D1RectangleGeometry : constant GUID:=uuidof("2cd906a2-12e2-11dc-9fed-001143a055f9");

   type ID2D1RectangleGeometry is record
      QueryInterface:access function(THIS:LPID2D1RectangleGeometry;riid:REFIID;ppvObj:LPLPvoid) return HRESULT with Convention=>Stdcall;
      AddRef:access function(THIS:LPID2D1RectangleGeometry) return ULONG with Convention=>Stdcall;
      Release:access function(THIS:LPID2D1RectangleGeometry) return ULONG with Convention=>Stdcall;
      GetFactory:access function(factory:LPLPID2D1Factory) return void with Convention=>Stdcall;
      GetBounds:access function(THIS:LPID2D1RectangleGeometry;worldTransform:LPCD2D1_MATRIX_3X2_F;bounds:LPD2D1_RECT_F) return HRESULT with Convention=>Stdcall;
      GetWidenedBounds:access function(THIS:LPID2D1RectangleGeometry;strokeWidth:FLOAT;strokeStyle:LPID2D1StrokeStyle;worldTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;bounds:LPD2D1_RECT_F) return HRESULT with Convention=>Stdcall;
      StrokeContainsPoint:access function(THIS:LPID2D1RectangleGeometry;point:D2D1_POINT_2F;strokeWidth:FLOAT;strokeStyle:LPID2D1StrokeStyle;worldTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;contains:LPBOOL) return HRESULT with Convention=>Stdcall;
      FillContainsPoint:access function(THIS:LPID2D1RectangleGeometry;point:D2D1_POINT_2F;worldTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;contains:LPBOOL) return HRESULT with Convention=>Stdcall;
      CompareWithGeometry:access function(THIS:LPID2D1RectangleGeometry;inputGeometry:LPID2D1Geometry;inputGeometryTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;relation:LPD2D1_GEOMETRY_RELATION) return HRESULT with Convention=>Stdcall;
      Simplify:access function(THIS:LPID2D1RectangleGeometry;simplificationOption:D2D1_GEOMETRY_SIMPLIFICATION_OPTION;worldTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;geometrySink:LPID2D1SimplifiedGeometrySink) return HRESULT with Convention=>Stdcall;
      Tessellate:access function(THIS:LPID2D1RectangleGeometry;worldTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;tessellationSink:LPID2D1TessellationSink) return HRESULT with Convention=>Stdcall;
      CombineWithGeometry:access function(THIS:LPID2D1RectangleGeometry;inputGeometry:LPID2D1Geometry;combineMode:D2D1_COMBINE_MODE;inputGeometryTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;geometrySink:LPID2D1SimplifiedGeometrySink) return HRESULT with Convention=>Stdcall;
      Outline:access function(THIS:LPID2D1RectangleGeometry;worldTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;geometrySink:LPID2D1SimplifiedGeometrySink) return HRESULT with Convention=>Stdcall;
      ComputeArea:access function(THIS:LPID2D1RectangleGeometry;worldTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;area:LPFLOAT) return HRESULT with Convention=>Stdcall;
      ComputeLength:access function(THIS:LPID2D1RectangleGeometry;worldTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;length:LPFLOAT) return HRESULT with Convention=>Stdcall;
      ComputePointAtLength:access function(THIS:LPID2D1RectangleGeometry;length:FLOAT;worldTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;point:LPD2D1_POINT_2F;unitTangentVector:LPD2D1_POINT_2F) return HRESULT with Convention=>Stdcall;
      Widen:access function(THIS:LPID2D1RectangleGeometry;strokeWidth:FLOAT;strokeStyle:LPID2D1StrokeStyle;worldTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;geometrySink:LPID2D1SimplifiedGeometrySink) return HRESULT with Convention=>Stdcall;
      GetRect:access function(THIS:LPID2D1RectangleGeometry;rect:LPD2D1_RECT_F) return void with Convention=>Stdcall;
   end record;

   IID_ID2D1RoundedRectangleGeometry : constant GUID:=uuidof("2cd906a3-12e2-11dc-9fed-001143a055f9");

   type ID2D1RoundedRectangleGeometry is record
      QueryInterface:access function(THIS:LPID2D1RoundedRectangleGeometry;riid:REFIID;ppvObj:LPLPvoid) return HRESULT with Convention=>Stdcall;
      AddRef:access function(THIS:LPID2D1RoundedRectangleGeometry) return ULONG with Convention=>Stdcall;
      Release:access function(THIS:LPID2D1RoundedRectangleGeometry) return ULONG with Convention=>Stdcall;
      GetFactory:access function(factory:LPLPID2D1Factory) return void with Convention=>Stdcall;
      GetBounds:access function(THIS:LPID2D1RoundedRectangleGeometry;worldTransform:LPCD2D1_MATRIX_3X2_F;bounds:LPD2D1_RECT_F) return HRESULT with Convention=>Stdcall;
      GetWidenedBounds:access function(THIS:LPID2D1RoundedRectangleGeometry;strokeWidth:FLOAT;strokeStyle:LPID2D1StrokeStyle;worldTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;bounds:LPD2D1_RECT_F) return HRESULT with Convention=>Stdcall;
      StrokeContainsPoint:access function(THIS:LPID2D1RoundedRectangleGeometry;point:D2D1_POINT_2F;strokeWidth:FLOAT;strokeStyle:LPID2D1StrokeStyle;worldTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;contains:LPBOOL) return HRESULT with Convention=>Stdcall;
      FillContainsPoint:access function(THIS:LPID2D1RoundedRectangleGeometry;point:D2D1_POINT_2F;worldTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;contains:LPBOOL) return HRESULT with Convention=>Stdcall;
      CompareWithGeometry:access function(THIS:LPID2D1RoundedRectangleGeometry;inputGeometry:LPID2D1Geometry;inputGeometryTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;relation:LPD2D1_GEOMETRY_RELATION) return HRESULT with Convention=>Stdcall;
      Simplify:access function(THIS:LPID2D1RoundedRectangleGeometry;simplificationOption:D2D1_GEOMETRY_SIMPLIFICATION_OPTION;worldTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;geometrySink:LPID2D1SimplifiedGeometrySink) return HRESULT with Convention=>Stdcall;
      Tessellate:access function(THIS:LPID2D1RoundedRectangleGeometry;worldTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;tessellationSink:LPID2D1TessellationSink) return HRESULT with Convention=>Stdcall;
      CombineWithGeometry:access function(THIS:LPID2D1RoundedRectangleGeometry;inputGeometry:LPID2D1Geometry;combineMode:D2D1_COMBINE_MODE;inputGeometryTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;geometrySink:LPID2D1SimplifiedGeometrySink) return HRESULT with Convention=>Stdcall;
      Outline:access function(THIS:LPID2D1RoundedRectangleGeometry;worldTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;geometrySink:LPID2D1SimplifiedGeometrySink) return HRESULT with Convention=>Stdcall;
      ComputeArea:access function(THIS:LPID2D1RoundedRectangleGeometry;worldTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;area:LPFLOAT) return HRESULT with Convention=>Stdcall;
      ComputeLength:access function(THIS:LPID2D1RoundedRectangleGeometry;worldTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;length:LPFLOAT) return HRESULT with Convention=>Stdcall;
      ComputePointAtLength:access function(THIS:LPID2D1RoundedRectangleGeometry;length:FLOAT;worldTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;point:LPD2D1_POINT_2F;unitTangentVector:LPD2D1_POINT_2F) return HRESULT with Convention=>Stdcall;
      Widen:access function(THIS:LPID2D1RoundedRectangleGeometry;strokeWidth:FLOAT;strokeStyle:LPID2D1StrokeStyle;worldTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;geometrySink:LPID2D1SimplifiedGeometrySink) return HRESULT with Convention=>Stdcall;
      GetRoundedRect:access function(THIS:LPID2D1RoundedRectangleGeometry;roundedRect:LPD2D1_ROUNDED_RECT) return void with Convention=>Stdcall;
   end record;

   IID_ID2D1EllipseGeometry : constant GUID:=uuidof("2cd906a4-12e2-11dc-9fed-001143a055f9");

   type ID2D1EllipseGeometry is record
      QueryInterface:access function(THIS:LPID2D1EllipseGeometry;riid:REFIID;ppvObj:LPLPvoid) return HRESULT with Convention=>Stdcall;
      AddRef:access function(THIS:LPID2D1EllipseGeometry) return ULONG with Convention=>Stdcall;
      Release:access function(THIS:LPID2D1EllipseGeometry) return ULONG with Convention=>Stdcall;
      GetFactory:access function(factory:LPLPID2D1Factory) return void with Convention=>Stdcall;
      GetBounds:access function(THIS:LPID2D1EllipseGeometry;worldTransform:LPCD2D1_MATRIX_3X2_F;bounds:LPD2D1_RECT_F) return HRESULT with Convention=>Stdcall;
      GetWidenedBounds:access function(THIS:LPID2D1EllipseGeometry;strokeWidth:FLOAT;strokeStyle:LPID2D1StrokeStyle;worldTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;bounds:LPD2D1_RECT_F) return HRESULT with Convention=>Stdcall;
      StrokeContainsPoint:access function(THIS:LPID2D1EllipseGeometry;point:D2D1_POINT_2F;strokeWidth:FLOAT;strokeStyle:LPID2D1StrokeStyle;worldTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;contains:LPBOOL) return HRESULT with Convention=>Stdcall;
      FillContainsPoint:access function(THIS:LPID2D1EllipseGeometry;point:D2D1_POINT_2F;worldTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;contains:LPBOOL) return HRESULT with Convention=>Stdcall;
      CompareWithGeometry:access function(THIS:LPID2D1EllipseGeometry;inputGeometry:LPID2D1Geometry;inputGeometryTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;relation:LPD2D1_GEOMETRY_RELATION) return HRESULT with Convention=>Stdcall;
      Simplify:access function(THIS:LPID2D1EllipseGeometry;simplificationOption:D2D1_GEOMETRY_SIMPLIFICATION_OPTION;worldTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;geometrySink:LPID2D1SimplifiedGeometrySink) return HRESULT with Convention=>Stdcall;
      Tessellate:access function(THIS:LPID2D1EllipseGeometry;worldTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;tessellationSink:LPID2D1TessellationSink) return HRESULT with Convention=>Stdcall;
      CombineWithGeometry:access function(THIS:LPID2D1EllipseGeometry;inputGeometry:LPID2D1Geometry;combineMode:D2D1_COMBINE_MODE;inputGeometryTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;geometrySink:LPID2D1SimplifiedGeometrySink) return HRESULT with Convention=>Stdcall;
      Outline:access function(THIS:LPID2D1EllipseGeometry;worldTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;geometrySink:LPID2D1SimplifiedGeometrySink) return HRESULT with Convention=>Stdcall;
      ComputeArea:access function(THIS:LPID2D1EllipseGeometry;worldTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;area:LPFLOAT) return HRESULT with Convention=>Stdcall;
      ComputeLength:access function(THIS:LPID2D1EllipseGeometry;worldTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;length:LPFLOAT) return HRESULT with Convention=>Stdcall;
      ComputePointAtLength:access function(THIS:LPID2D1EllipseGeometry;length:FLOAT;worldTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;point:LPD2D1_POINT_2F;unitTangentVector:LPD2D1_POINT_2F) return HRESULT with Convention=>Stdcall;
      Widen:access function(THIS:LPID2D1EllipseGeometry;strokeWidth:FLOAT;strokeStyle:LPID2D1StrokeStyle;worldTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;geometrySink:LPID2D1SimplifiedGeometrySink) return HRESULT with Convention=>Stdcall;
      GetEllipse:access function(THIS:LPID2D1EllipseGeometry;ellipse:LPD2D1_ELLIPSE) return void with Convention=>Stdcall;
   end record;

   IID_ID2D1GeometryGroup : constant GUID:=uuidof("2cd906a6-12e2-11dc-9fed-001143a055f9");

   type ID2D1GeometryGroup is record
      QueryInterface:access function(THIS:LPID2D1GeometryGroup;riid:REFIID;ppvObj:LPLPvoid) return HRESULT with Convention=>Stdcall;
      AddRef:access function(THIS:LPID2D1GeometryGroup) return ULONG with Convention=>Stdcall;
      Release:access function(THIS:LPID2D1GeometryGroup) return ULONG with Convention=>Stdcall;
      GetFactory:access function(factory:LPLPID2D1Factory) return void with Convention=>Stdcall;
      GetBounds:access function(THIS:LPID2D1GeometryGroup;worldTransform:LPCD2D1_MATRIX_3X2_F;bounds:LPD2D1_RECT_F) return HRESULT with Convention=>Stdcall;
      GetWidenedBounds:access function(THIS:LPID2D1GeometryGroup;strokeWidth:FLOAT;strokeStyle:LPID2D1StrokeStyle;worldTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;bounds:LPD2D1_RECT_F) return HRESULT with Convention=>Stdcall;
      StrokeContainsPoint:access function(THIS:LPID2D1GeometryGroup;point:D2D1_POINT_2F;strokeWidth:FLOAT;strokeStyle:LPID2D1StrokeStyle;worldTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;contains:LPBOOL) return HRESULT with Convention=>Stdcall;
      FillContainsPoint:access function(THIS:LPID2D1GeometryGroup;point:D2D1_POINT_2F;worldTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;contains:LPBOOL) return HRESULT with Convention=>Stdcall;
      CompareWithGeometry:access function(THIS:LPID2D1GeometryGroup;inputGeometry:LPID2D1Geometry;inputGeometryTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;relation:LPD2D1_GEOMETRY_RELATION) return HRESULT with Convention=>Stdcall;
      Simplify:access function(THIS:LPID2D1GeometryGroup;simplificationOption:D2D1_GEOMETRY_SIMPLIFICATION_OPTION;worldTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;geometrySink:LPID2D1SimplifiedGeometrySink) return HRESULT with Convention=>Stdcall;
      Tessellate:access function(THIS:LPID2D1GeometryGroup;worldTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;tessellationSink:LPID2D1TessellationSink) return HRESULT with Convention=>Stdcall;
      CombineWithGeometry:access function(THIS:LPID2D1GeometryGroup;inputGeometry:LPID2D1Geometry;combineMode:D2D1_COMBINE_MODE;inputGeometryTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;geometrySink:LPID2D1SimplifiedGeometrySink) return HRESULT with Convention=>Stdcall;
      Outline:access function(THIS:LPID2D1GeometryGroup;worldTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;geometrySink:LPID2D1SimplifiedGeometrySink) return HRESULT with Convention=>Stdcall;
      ComputeArea:access function(THIS:LPID2D1GeometryGroup;worldTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;area:LPFLOAT) return HRESULT with Convention=>Stdcall;
      ComputeLength:access function(THIS:LPID2D1GeometryGroup;worldTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;length:LPFLOAT) return HRESULT with Convention=>Stdcall;
      ComputePointAtLength:access function(THIS:LPID2D1GeometryGroup;length:FLOAT;worldTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;point:LPD2D1_POINT_2F;unitTangentVector:LPD2D1_POINT_2F) return HRESULT with Convention=>Stdcall;
      Widen:access function(THIS:LPID2D1GeometryGroup;strokeWidth:FLOAT;strokeStyle:LPID2D1StrokeStyle;worldTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;geometrySink:LPID2D1SimplifiedGeometrySink) return HRESULT with Convention=>Stdcall;
      GetFillMode:access function(THIS:LPID2D1GeometryGroup) return D2D1_FILL_MODE with Convention=>Stdcall;
      GetSourceGeometryCount:access function(THIS:LPID2D1GeometryGroup) return UINT32 with Convention=>Stdcall;
      GetSourceGeometries:access function(THIS:LPID2D1GeometryGroup;geometries:LPLPID2D1Geometry;geometriesCount:UINT) return void with Convention=>Stdcall;
   end record;

   IID_ID2D1TransformedGeometry : constant GUID:=uuidof("2cd906bb-12e2-11dc-9fed-001143a055f9");

   type ID2D1TransformedGeometry is record
      QueryInterface:access function(THIS:LPID2D1TransformedGeometry;riid:REFIID;ppvObj:LPLPvoid) return HRESULT with Convention=>Stdcall;
      AddRef:access function(THIS:LPID2D1TransformedGeometry) return ULONG with Convention=>Stdcall;
      Release:access function(THIS:LPID2D1TransformedGeometry) return ULONG with Convention=>Stdcall;
      GetFactory:access function(factory:LPLPID2D1Factory) return void with Convention=>Stdcall;
      GetBounds:access function(THIS:LPID2D1TransformedGeometry;worldTransform:LPCD2D1_MATRIX_3X2_F;bounds:LPD2D1_RECT_F) return HRESULT with Convention=>Stdcall;
      GetWidenedBounds:access function(THIS:LPID2D1TransformedGeometry;strokeWidth:FLOAT;strokeStyle:LPID2D1StrokeStyle;worldTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;bounds:LPD2D1_RECT_F) return HRESULT with Convention=>Stdcall;
      StrokeContainsPoint:access function(THIS:LPID2D1TransformedGeometry;point:D2D1_POINT_2F;strokeWidth:FLOAT;strokeStyle:LPID2D1StrokeStyle;worldTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;contains:LPBOOL) return HRESULT with Convention=>Stdcall;
      FillContainsPoint:access function(THIS:LPID2D1TransformedGeometry;point:D2D1_POINT_2F;worldTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;contains:LPBOOL) return HRESULT with Convention=>Stdcall;
      CompareWithGeometry:access function(THIS:LPID2D1TransformedGeometry;inputGeometry:LPID2D1Geometry;inputGeometryTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;relation:LPD2D1_GEOMETRY_RELATION) return HRESULT with Convention=>Stdcall;
      Simplify:access function(THIS:LPID2D1TransformedGeometry;simplificationOption:D2D1_GEOMETRY_SIMPLIFICATION_OPTION;worldTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;geometrySink:LPID2D1SimplifiedGeometrySink) return HRESULT with Convention=>Stdcall;
      Tessellate:access function(THIS:LPID2D1TransformedGeometry;worldTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;tessellationSink:LPID2D1TessellationSink) return HRESULT with Convention=>Stdcall;
      CombineWithGeometry:access function(THIS:LPID2D1TransformedGeometry;inputGeometry:LPID2D1Geometry;combineMode:D2D1_COMBINE_MODE;inputGeometryTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;geometrySink:LPID2D1SimplifiedGeometrySink) return HRESULT with Convention=>Stdcall;
      Outline:access function(THIS:LPID2D1TransformedGeometry;worldTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;geometrySink:LPID2D1SimplifiedGeometrySink) return HRESULT with Convention=>Stdcall;
      ComputeArea:access function(THIS:LPID2D1TransformedGeometry;worldTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;area:LPFLOAT) return HRESULT with Convention=>Stdcall;
      ComputeLength:access function(THIS:LPID2D1TransformedGeometry;worldTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;length:LPFLOAT) return HRESULT with Convention=>Stdcall;
      ComputePointAtLength:access function(THIS:LPID2D1TransformedGeometry;length:FLOAT;worldTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;point:LPD2D1_POINT_2F;unitTangentVector:LPD2D1_POINT_2F) return HRESULT with Convention=>Stdcall;
      Widen:access function(THIS:LPID2D1TransformedGeometry;strokeWidth:FLOAT;strokeStyle:LPID2D1StrokeStyle;worldTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;geometrySink:LPID2D1SimplifiedGeometrySink) return HRESULT with Convention=>Stdcall;
      GetSourceGeometry:access function(THIS:LPID2D1TransformedGeometry;sourceGeometry:LPLPID2D1Geometry) return void with Convention=>Stdcall;
      GetTransform:access function(THIS:LPID2D1TransformedGeometry;transform:LPD2D1_MATRIX_3X2_F) return void with Convention=>Stdcall;
   end record;

   IID_ID2D1SimplifiedGeometrySink : constant GUID:=uuidof("2cd9069e-12e2-11dc-9fed-001143a055f9");

   type ID2D1SimplifiedGeometrySink is record
      QueryInterface:access function(THIS:LPID2D1SimplifiedGeometrySink;riid:REFIID;ppvObj:LPLPvoid) return HRESULT with Convention=>Stdcall;
      AddRef:access function(THIS:LPID2D1SimplifiedGeometrySink) return ULONG with Convention=>Stdcall;
      Release:access function(THIS:LPID2D1SimplifiedGeometrySink) return ULONG with Convention=>Stdcall;
      SetFillMode:access function(THIS:LPID2D1SimplifiedGeometrySink;fillMode:D2D1_FILL_MODE) return void with Convention=>Stdcall;
      SetSegmentFlags:access function(THIS:LPID2D1SimplifiedGeometrySink;vertexFlags:D2D1_PATH_SEGMENT) return void with Convention=>Stdcall;
      BeginFigure:access function(THIS:LPID2D1SimplifiedGeometrySink;startPoint:D2D1_POINT_2F;figureBegin:D2D1_FIGURE_BEGIN) return void with Convention=>Stdcall;
      AddLines:access function(THIS:LPID2D1SimplifiedGeometrySink;points:LPCD2D1_POINT_2F;pointsCount:UINT) return void with Convention=>Stdcall;
      AddBeziers:access function(THIS:LPID2D1SimplifiedGeometrySink;beziers:LPCD2D1_BEZIER_SEGMENT;beziersCount:UINT) return void with Convention=>Stdcall;
      EndFigure:access function(THIS:LPID2D1SimplifiedGeometrySink;figureEnd:D2D1_FIGURE_END) return void with Convention=>Stdcall;
      Close:access function(THIS:LPID2D1SimplifiedGeometrySink) return HRESULT with Convention=>Stdcall;
   end record;

   IID_ID2D1GeometrySink : constant GUID:=uuidof("2cd9069f-12e2-11dc-9fed-001143a055f9");

   type ID2D1GeometrySink is record
      QueryInterface:access function(THIS:LPID2D1GeometrySink;riid:REFIID;ppvObj:LPLPvoid) return HRESULT with Convention=>Stdcall;
      AddRef:access function(THIS:LPID2D1GeometrySink) return ULONG with Convention=>Stdcall;
      Release:access function(THIS:LPID2D1GeometrySink) return ULONG with Convention=>Stdcall;
      SetFillMode:access function(THIS:LPID2D1GeometrySink;fillMode:D2D1_FILL_MODE) return void with Convention=>Stdcall;
      SetSegmentFlags:access function(THIS:LPID2D1GeometrySink;vertexFlags:D2D1_PATH_SEGMENT) return void with Convention=>Stdcall;
      BeginFigure:access function(THIS:LPID2D1GeometrySink;startPoint:D2D1_POINT_2F;figureBegin:D2D1_FIGURE_BEGIN) return void with Convention=>Stdcall;
      AddLines:access function(THIS:LPID2D1GeometrySink;points:LPCD2D1_POINT_2F;pointsCount:UINT) return void with Convention=>Stdcall;
      AddBeziers:access function(THIS:LPID2D1GeometrySink;beziers:LPCD2D1_BEZIER_SEGMENT;beziersCount:UINT) return void with Convention=>Stdcall;
      EndFigure:access function(THIS:LPID2D1GeometrySink;figureEnd:D2D1_FIGURE_END) return void with Convention=>Stdcall;
      Close:access function(THIS:LPID2D1GeometrySink) return HRESULT with Convention=>Stdcall;
      AddLine:access function(THIS:LPID2D1GeometrySink;point:D2D1_POINT_2F) return void with Convention=>Stdcall;
      AddBezier:access function(THIS:LPID2D1GeometrySink;bezier:LPCD2D1_BEZIER_SEGMENT) return void with Convention=>Stdcall;
      AddQuadraticBezier:access function(THIS:LPID2D1GeometrySink;bezier:LPCD2D1_QUADRATIC_BEZIER_SEGMENT) return void with Convention=>Stdcall;
      AddQuadraticBeziers:access function(THIS:LPID2D1GeometrySink;beziers:LPCD2D1_QUADRATIC_BEZIER_SEGMENT;beziersCount:UINT) return void with Convention=>Stdcall;
      AddArc:access function(THIS:LPID2D1GeometrySink;arc:LPCD2D1_ARC_SEGMENT) return void with Convention=>Stdcall;
   end record;

   IID_ID2D1TessellationSink : constant GUID:=uuidof("2cd906c1-12e2-11dc-9fed-001143a055f9");

   type ID2D1TessellationSink is record
      QueryInterface:access function(THIS:LPID2D1TessellationSink;riid:REFIID;ppvObj:LPLPvoid) return HRESULT with Convention=>Stdcall;
      AddRef:access function(THIS:LPID2D1TessellationSink) return ULONG with Convention=>Stdcall;
      Release:access function(THIS:LPID2D1TessellationSink) return ULONG with Convention=>Stdcall;
      AddTriangles:access function(THIS:LPID2D1TessellationSink;triangles:LPCD2D1_TRIANGLE;trianglesCount:UINT) return void with Convention=>Stdcall;
      Close:access function(THIS:LPID2D1TessellationSink) return HRESULT with Convention=>Stdcall;
   end record;

   IID_ID2D1PathGeometry : constant GUID:=uuidof("2cd906a5-12e2-11dc-9fed-001143a055f9");

   type ID2D1PathGeometry is record
      QueryInterface:access function(THIS:LPID2D1PathGeometry;riid:REFIID;ppvObj:LPLPvoid) return HRESULT with Convention=>Stdcall;
      AddRef:access function(THIS:LPID2D1PathGeometry) return ULONG with Convention=>Stdcall;
      Release:access function(THIS:LPID2D1PathGeometry) return ULONG with Convention=>Stdcall;
      GetFactory:access function(factory:LPLPID2D1Factory) return void with Convention=>Stdcall;
      GetBounds:access function(THIS:LPID2D1PathGeometry;worldTransform:LPCD2D1_MATRIX_3X2_F;bounds:LPD2D1_RECT_F) return HRESULT with Convention=>Stdcall;
      GetWidenedBounds:access function(THIS:LPID2D1PathGeometry;strokeWidth:FLOAT;strokeStyle:LPID2D1StrokeStyle;worldTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;bounds:LPD2D1_RECT_F) return HRESULT with Convention=>Stdcall;
      StrokeContainsPoint:access function(THIS:LPID2D1PathGeometry;point:D2D1_POINT_2F;strokeWidth:FLOAT;strokeStyle:LPID2D1StrokeStyle;worldTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;contains:LPBOOL) return HRESULT with Convention=>Stdcall;
      FillContainsPoint:access function(THIS:LPID2D1PathGeometry;point:D2D1_POINT_2F;worldTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;contains:LPBOOL) return HRESULT with Convention=>Stdcall;
      CompareWithGeometry:access function(THIS:LPID2D1PathGeometry;inputGeometry:LPID2D1Geometry;inputGeometryTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;relation:LPD2D1_GEOMETRY_RELATION) return HRESULT with Convention=>Stdcall;
      Simplify:access function(THIS:LPID2D1PathGeometry;simplificationOption:D2D1_GEOMETRY_SIMPLIFICATION_OPTION;worldTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;geometrySink:LPID2D1SimplifiedGeometrySink) return HRESULT with Convention=>Stdcall;
      Tessellate:access function(THIS:LPID2D1PathGeometry;worldTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;tessellationSink:LPID2D1TessellationSink) return HRESULT with Convention=>Stdcall;
      CombineWithGeometry:access function(THIS:LPID2D1PathGeometry;inputGeometry:LPID2D1Geometry;combineMode:D2D1_COMBINE_MODE;inputGeometryTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;geometrySink:LPID2D1SimplifiedGeometrySink) return HRESULT with Convention=>Stdcall;
      Outline:access function(THIS:LPID2D1PathGeometry;worldTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;geometrySink:LPID2D1SimplifiedGeometrySink) return HRESULT with Convention=>Stdcall;
      ComputeArea:access function(THIS:LPID2D1PathGeometry;worldTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;area:LPFLOAT) return HRESULT with Convention=>Stdcall;
      ComputeLength:access function(THIS:LPID2D1PathGeometry;worldTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;length:LPFLOAT) return HRESULT with Convention=>Stdcall;
      ComputePointAtLength:access function(THIS:LPID2D1PathGeometry;length:FLOAT;worldTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;point:LPD2D1_POINT_2F;unitTangentVector:LPD2D1_POINT_2F) return HRESULT with Convention=>Stdcall;
      Widen:access function(THIS:LPID2D1PathGeometry;strokeWidth:FLOAT;strokeStyle:LPID2D1StrokeStyle;worldTransform:LPCD2D1_MATRIX_3X2_F;flatteningTolerance:FLOAT;geometrySink:LPID2D1SimplifiedGeometrySink) return HRESULT with Convention=>Stdcall;
      Open:access function(THIS:LPID2D1PathGeometry;geometrySink:LPLPID2D1GeometrySink) return HRESULT with Convention=>Stdcall;
      Stream:access function(THIS:LPID2D1PathGeometry;geometrySink:LPID2D1GeometrySink) return HRESULT with Convention=>Stdcall;
      GetSegmentCount:access function(THIS:LPID2D1PathGeometry;count:LPUINT32) return HRESULT with Convention=>Stdcall;
      GetFigureCount:access function(THIS:LPID2D1PathGeometry;count:LPUINT32) return HRESULT with Convention=>Stdcall;
   end record;

   IID_ID2D1Mesh : constant GUID:=uuidof("2cd906c2-12e2-11dc-9fed-001143a055f9");

   type ID2D1Mesh is record
      QueryInterface:access function(THIS:LPID2D1Mesh;riid:REFIID;ppvObj:LPLPvoid) return HRESULT with Convention=>Stdcall;
      AddRef:access function(THIS:LPID2D1Mesh) return ULONG with Convention=>Stdcall;
      Release:access function(THIS:LPID2D1Mesh) return ULONG with Convention=>Stdcall;
      GetFactory:access function(factory:LPLPID2D1Factory) return void with Convention=>Stdcall;
      Open:access function(THIS:LPID2D1Mesh;tessellationSink:LPLPID2D1TessellationSink) return HRESULT with Convention=>Stdcall;
   end record;

   IID_ID2D1Layer : constant GUID:=uuidof("2cd9069b-12e2-11dc-9fed-001143a055f9");

   type ID2D1Layer is record
      QueryInterface:access function(THIS:LPID2D1Layer;riid:REFIID;ppvObj:LPLPvoid) return HRESULT with Convention=>Stdcall;
      AddRef:access function(THIS:LPID2D1Layer) return ULONG with Convention=>Stdcall;
      Release:access function(THIS:LPID2D1Layer) return ULONG with Convention=>Stdcall;
      GetFactory:access function(factory:LPLPID2D1Factory) return void with Convention=>Stdcall;
      GetSize:access function(THIS:LPID2D1Layer) return D2D1_SIZE_F with Convention=>Stdcall;
   end record;

   IID_ID2D1DrawingStateBlock : constant GUID:=uuidof("28506e39-ebf6-46a1-bb47-fd85565ab957");

   type ID2D1DrawingStateBlock is record
      QueryInterface:access function(THIS:LPID2D1DrawingStateBlock;riid:REFIID;ppvObj:LPLPvoid) return HRESULT with Convention=>Stdcall;
      AddRef:access function(THIS:LPID2D1DrawingStateBlock) return ULONG with Convention=>Stdcall;
      Release:access function(THIS:LPID2D1DrawingStateBlock) return ULONG with Convention=>Stdcall;
      GetFactory:access function(factory:LPLPID2D1Factory) return void with Convention=>Stdcall;
      GetDescription:access function(THIS:LPID2D1DrawingStateBlock;stateDescription:LPD2D1_DRAWING_STATE_DESCRIPTION) return void with Convention=>Stdcall;
      SetDescription:access function(THIS:LPID2D1DrawingStateBlock;stateDescription:LPCD2D1_DRAWING_STATE_DESCRIPTION) return void with Convention=>Stdcall;
      SetTextRenderingParams:access function(THIS:LPID2D1DrawingStateBlock;textRenderingParamstag2:DWrite.LPIDWriteRenderingParams) return void with Convention=>Stdcall;
      GetTextRenderingParams:access function(THIS:LPID2D1DrawingStateBlock;textRenderingParams:DWrite.LPLPIDWriteRenderingParams) return void with Convention=>Stdcall;
   end record;

   IID_ID2D1RenderTarget : constant GUID:=uuidof("2cd90694-12e2-11dc-9fed-001143a055f9");

   type ID2D1RenderTarget is record
      QueryInterface:access function(THIS:LPID2D1RenderTarget;riid:REFIID;ppvObj:LPLPvoid) return HRESULT with Convention=>Stdcall;
      AddRef:access function(THIS:LPID2D1RenderTarget) return ULONG with Convention=>Stdcall;
      Release:access function(THIS:LPID2D1RenderTarget) return ULONG with Convention=>Stdcall;
      GetFactory:access function(factory:LPLPID2D1Factory) return void with Convention=>Stdcall;
      CreateBitmap:access function(THIS:LPID2D1RenderTarget;size:D2D1_SIZE_U;srcData:LPCvoid;pitch:UINT32;bitmapProperties:LPCD2D1_BITMAP_PROPERTIES;bitmap:LPLPID2D1Bitmap) return HRESULT with Convention=>Stdcall;
      CreateBitmapFromWicBitmap:access function(THIS:LPID2D1RenderTarget;wicBitmapSource:LPIWICBitmapSource;bitmapProperties:LPCD2D1_BITMAP_PROPERTIES;bitmap:LPLPID2D1Bitmap) return HRESULT with Convention=>Stdcall;
      CreateSharedBitmap:access function(THIS:LPID2D1RenderTarget;riid:REFIID;data:LPvoid;bitmapProperties:LPCD2D1_BITMAP_PROPERTIES;bitmap:LPLPID2D1Bitmap) return HRESULT with Convention=>Stdcall;
      CreateBitmapBrush:access function(THIS:LPID2D1RenderTarget;bitmap:LPID2D1Bitmap;bitmapBrushProperties:LPCD2D1_BITMAP_BRUSH_PROPERTIES;brushProperties:LPCD2D1_BRUSH_PROPERTIES;bitmapBrush:LPLPID2D1BitmapBrush) return HRESULT with Convention=>Stdcall;
      CreateSolidColorBrush:access function(THIS:LPID2D1RenderTarget;color:LPCD2D1_COLOR_F;brushProperties:LPCD2D1_BRUSH_PROPERTIES;solidColorBrush:LPLPID2D1SolidColorBrush) return HRESULT with Convention=>Stdcall;
      CreateGradientStopCollection:access function(THIS:LPID2D1RenderTarget;gradientStops:LPCD2D1_GRADIENT_STOP;gradientStopsCount:UINT;colorInterpolationGamma:D2D1_GAMMA;extendMode:D2D1_EXTEND_MODE;gradientStopCollection:LPLPID2D1GradientStopCollection) return HRESULT with Convention=>Stdcall;
      CreateLinearGradientBrush:access function(THIS:LPID2D1RenderTarget;linearGradientBrushProperties:LPCD2D1_LINEAR_GRADIENT_BRUSH_PROPERTIES;brushProperties:LPCD2D1_BRUSH_PROPERTIES;gradientStopCollection:LPID2D1GradientStopCollection;linearGradientBrush:LPLPID2D1LinearGradientBrush) return HRESULT with Convention=>Stdcall;
      CreateRadialGradientBrush:access function(THIS:LPID2D1RenderTarget;radialGradientBrushProperties:LPCD2D1_RADIAL_GRADIENT_BRUSH_PROPERTIES;brushProperties:LPCD2D1_BRUSH_PROPERTIES;gradientStopCollection:LPID2D1GradientStopCollection;radialGradientBrush:LPLPID2D1RadialGradientBrush) return HRESULT with Convention=>Stdcall;
      CreateCompatibleRenderTarget:access function(THIS:LPID2D1RenderTarget;desiredSize:LPCD2D1_SIZE_F;desiredPixelSize:LPCD2D1_SIZE_U;desiredFormat:LPCD2D1_PIXEL_FORMAT;options:D2D1_COMPATIBLE_RENDER_TARGET_OPTIONS;bitmapRenderTarget:LPLPID2D1BitmapRenderTarget) return HRESULT with Convention=>Stdcall;
      CreateLayer:access function(THIS:LPID2D1RenderTarget;size:LPCD2D1_SIZE_F;layer:LPLPID2D1Layer) return HRESULT with Convention=>Stdcall;
      CreateMesh:access function(THIS:LPID2D1RenderTarget;mesh:LPLPID2D1Mesh) return HRESULT with Convention=>Stdcall;
      DrawLine:access function(THIS:LPID2D1RenderTarget;point0:D2D1_POINT_2F;point1:D2D1_POINT_2F;brush:LPID2D1Brush;strokeWidth:FLOAT;strokeStyle:LPID2D1StrokeStyle) return void with Convention=>Stdcall;
      DrawRectangle:access function(THIS:LPID2D1RenderTarget;rect:LPCD2D1_RECT_F;brush:LPID2D1Brush;strokeWidth:FLOAT;strokeStyle:LPID2D1StrokeStyle) return void with Convention=>Stdcall;
      FillRectangle:access function(THIS:LPID2D1RenderTarget;rect:LPCD2D1_RECT_F;brush:LPID2D1Brush) return void with Convention=>Stdcall;
      DrawRoundedRectangle:access function(THIS:LPID2D1RenderTarget;roundedRect:LPCD2D1_ROUNDED_RECT;brush:LPID2D1Brush;strokeWidth:FLOAT;strokeStyle:LPID2D1StrokeStyle) return void with Convention=>Stdcall;
      FillRoundedRectangle:access function(THIS:LPID2D1RenderTarget;roundedRect:LPCD2D1_ROUNDED_RECT;brush:LPID2D1Brush) return void with Convention=>Stdcall;
      DrawEllipse:access function(THIS:LPID2D1RenderTarget;ellipse:LPCD2D1_ELLIPSE;brush:LPID2D1Brush;strokeWidth:FLOAT;strokeStyle:LPID2D1StrokeStyle) return void with Convention=>Stdcall;
      FillEllipse:access function(THIS:LPID2D1RenderTarget;ellipse:LPCD2D1_ELLIPSE;brush:LPID2D1Brush) return void with Convention=>Stdcall;
      DrawGeometry:access function(THIS:LPID2D1RenderTarget;geometry:LPID2D1Geometry;brush:LPID2D1Brush;strokeWidth:FLOAT;strokeStyle:LPID2D1StrokeStyle) return void with Convention=>Stdcall;
      FillGeometry:access function(THIS:LPID2D1RenderTarget;geometry:LPID2D1Geometry;brush:LPID2D1Brush;opacityBrushtag2:LPID2D1Brush) return void with Convention=>Stdcall;
      FillMesh:access function(THIS:LPID2D1RenderTarget;mesh:LPID2D1Mesh;brush:LPID2D1Brush) return void with Convention=>Stdcall;
      FillOpacityMask:access function(THIS:LPID2D1RenderTarget;opacityMask:LPID2D1Bitmap;brush:LPID2D1Brush;content:D2D1_OPACITY_MASK_CONTENT;destinationRectangletag2:LPCD2D1_RECT_F;sourceRectangletag2:LPCD2D1_RECT_F) return void with Convention=>Stdcall;
      DrawBitmap:access function(THIS:LPID2D1RenderTarget;bitmap:LPID2D1Bitmap;destinationRectangletag2:LPCD2D1_RECT_F;opacity:FLOAT;interpolationMode:D2D1_BITMAP_INTERPOLATION_MODE;sourceRectangletag2:LPCD2D1_RECT_F) return void with Convention=>Stdcall;
      DrawText:access function(THIS:LPID2D1RenderTarget;string:LPCWCHAR;stringLength:UINT;textFormat:DWrite.LPIDWriteTextFormat;layoutRect:LPCD2D1_RECT_F;defaultForegroundBrush:LPID2D1Brush;options:D2D1_DRAW_TEXT_OPTIONS;measuringMode:DWrite.DWRITE_MEASURING_MODE) return void with Convention=>Stdcall;
      DrawTextLayout:access function(THIS:LPID2D1RenderTarget;origin:D2D1_POINT_2F;textLayout:DWrite.LPIDWriteTextLayout;defaultForegroundBrush:LPID2D1Brush;options:D2D1_DRAW_TEXT_OPTIONS) return void with Convention=>Stdcall;
      DrawGlyphRun:access function(THIS:LPID2D1RenderTarget;baselineOrigin:D2D1_POINT_2F;glyphRun:DWrite.LPCDWRITE_GLYPH_RUN;foregroundBrush:LPID2D1Brush;measuringMode:DWrite.DWRITE_MEASURING_MODE) return void with Convention=>Stdcall;
      SetTransform:access function(THIS:LPID2D1RenderTarget;transform:LPCD2D1_MATRIX_3X2_F) return void with Convention=>Stdcall;
      GetTransform:access function(THIS:LPID2D1RenderTarget;transform:LPD2D1_MATRIX_3X2_F) return void with Convention=>Stdcall;
      SetAntialiasMode:access function(THIS:LPID2D1RenderTarget;antialiasMode:D2D1_ANTIALIAS_MODE) return void with Convention=>Stdcall;
      GetAntialiasMode:access function(THIS:LPID2D1RenderTarget) return D2D1_ANTIALIAS_MODE with Convention=>Stdcall;
      SetTextAntialiasMode:access function(THIS:LPID2D1RenderTarget;textAntialiasMode:D2D1_TEXT_ANTIALIAS_MODE) return void with Convention=>Stdcall;
      GetTextAntialiasMode:access function(THIS:LPID2D1RenderTarget) return D2D1_TEXT_ANTIALIAS_MODE with Convention=>Stdcall;
      SetTextRenderingParams:access function(THIS:LPID2D1RenderTarget;textRenderingParamstag2:DWrite.LPIDWriteRenderingParams) return void with Convention=>Stdcall;
      GetTextRenderingParams:access function(THIS:LPID2D1RenderTarget;textRenderingParams:DWrite.LPLPIDWriteRenderingParams) return void with Convention=>Stdcall;
      SetTags:access function(THIS:LPID2D1RenderTarget;tag1:D2D1_TAG;tag2:D2D1_TAG) return void with Convention=>Stdcall;
      GetTags:access function(THIS:LPID2D1RenderTarget;tag1:LPD2D1_TAG;tag2:LPD2D1_TAG) return void with Convention=>Stdcall;
      PushLayer:access function(THIS:LPID2D1RenderTarget;layerParameters:LPCD2D1_LAYER_PARAMETERS;layer:LPID2D1Layer) return void with Convention=>Stdcall;
      PopLayer:access function(THIS:LPID2D1RenderTarget) return void with Convention=>Stdcall;
      Flush:access function(THIS:LPID2D1RenderTarget;tag1:LPD2D1_TAG;tag2:LPD2D1_TAG) return HRESULT with Convention=>Stdcall;
      SaveDrawingState:access function(THIS:LPID2D1RenderTarget;drawingStateBlock:LPID2D1DrawingStateBlock) return void with Convention=>Stdcall;
      RestoreDrawingState:access function(THIS:LPID2D1RenderTarget;drawingStateBlock:LPID2D1DrawingStateBlock) return void with Convention=>Stdcall;
      PushAxisAlignedClip:access function(THIS:LPID2D1RenderTarget;clipRect:LPCD2D1_RECT_F;antialiasMode:D2D1_ANTIALIAS_MODE) return void with Convention=>Stdcall;
      PopAxisAlignedClip:access function(THIS:LPID2D1RenderTarget) return void with Convention=>Stdcall;
      Clear:access function(THIS:LPID2D1RenderTarget;clearColortag2:LPCD2D1_COLOR_F) return void with Convention=>Stdcall;
      BeginDraw:access function(THIS:LPID2D1RenderTarget) return void with Convention=>Stdcall;
      EndDraw:access function(THIS:LPID2D1RenderTarget;tag1:LPD2D1_TAG;tag2:LPD2D1_TAG) return HRESULT with Convention=>Stdcall;
      GetPixelFormat:access function(THIS:LPID2D1RenderTarget) return D2D1_PIXEL_FORMAT with Convention=>Stdcall;
      SetDpi:access function(THIS:LPID2D1RenderTarget;dpiX:FLOAT;dpiY:FLOAT) return void with Convention=>Stdcall;
      GetDpi:access function(THIS:LPID2D1RenderTarget;dpiX:LPFLOAT;dpiY:LPFLOAT) return void with Convention=>Stdcall;
      GetSize:access function(THIS:LPID2D1RenderTarget) return D2D1_SIZE_F with Convention=>Stdcall;
      GetPixelSize:access function(THIS:LPID2D1RenderTarget) return D2D1_SIZE_U with Convention=>Stdcall;
      GetMaximumBitmapSize:access function(THIS:LPID2D1RenderTarget) return UINT32 with Convention=>Stdcall;
      IsSupported:access function(THIS:LPID2D1RenderTarget;renderTargetProperties:LPCD2D1_RENDER_TARGET_PROPERTIES) return BOOL with Convention=>Stdcall;
   end record;

   IID_ID2D1BitmapRenderTarget : constant GUID:=uuidof("2cd90695-12e2-11dc-9fed-001143a055f9");

   type ID2D1BitmapRenderTarget is record
      QueryInterface:access function(THIS:LPID2D1BitmapRenderTarget;riid:REFIID;ppvObj:LPLPvoid) return HRESULT with Convention=>Stdcall;
      AddRef:access function(THIS:LPID2D1BitmapRenderTarget) return ULONG with Convention=>Stdcall;
      Release:access function(THIS:LPID2D1BitmapRenderTarget) return ULONG with Convention=>Stdcall;
      GetFactory:access function(factory:LPLPID2D1Factory) return void with Convention=>Stdcall;
      CreateBitmap:access function(THIS:LPID2D1BitmapRenderTarget;size:D2D1_SIZE_U;srcData:LPCvoid;pitch:UINT32;bitmapProperties:LPCD2D1_BITMAP_PROPERTIES;bitmap:LPLPID2D1Bitmap) return HRESULT with Convention=>Stdcall;
      CreateBitmapFromWicBitmap:access function(THIS:LPID2D1BitmapRenderTarget;wicBitmapSource:LPIWICBitmapSource;bitmapProperties:LPCD2D1_BITMAP_PROPERTIES;bitmap:LPLPID2D1Bitmap) return HRESULT with Convention=>Stdcall;
      CreateSharedBitmap:access function(THIS:LPID2D1BitmapRenderTarget;riid:REFIID;data:LPvoid;bitmapProperties:LPCD2D1_BITMAP_PROPERTIES;bitmap:LPLPID2D1Bitmap) return HRESULT with Convention=>Stdcall;
      CreateBitmapBrush:access function(THIS:LPID2D1BitmapRenderTarget;bitmap:LPID2D1Bitmap;bitmapBrushProperties:LPCD2D1_BITMAP_BRUSH_PROPERTIES;brushProperties:LPCD2D1_BRUSH_PROPERTIES;bitmapBrush:LPLPID2D1BitmapBrush) return HRESULT with Convention=>Stdcall;
      CreateSolidColorBrush:access function(THIS:LPID2D1BitmapRenderTarget;color:LPCD2D1_COLOR_F;brushProperties:LPCD2D1_BRUSH_PROPERTIES;solidColorBrush:LPLPID2D1SolidColorBrush) return HRESULT with Convention=>Stdcall;
      CreateGradientStopCollection:access function(THIS:LPID2D1BitmapRenderTarget;gradientStops:LPCD2D1_GRADIENT_STOP;gradientStopsCount:UINT;colorInterpolationGamma:D2D1_GAMMA;extendMode:D2D1_EXTEND_MODE;gradientStopCollection:LPLPID2D1GradientStopCollection) return HRESULT with Convention=>Stdcall;
      CreateLinearGradientBrush:access function(THIS:LPID2D1BitmapRenderTarget;linearGradientBrushProperties:LPCD2D1_LINEAR_GRADIENT_BRUSH_PROPERTIES;brushProperties:LPCD2D1_BRUSH_PROPERTIES;gradientStopCollection:LPID2D1GradientStopCollection;linearGradientBrush:LPLPID2D1LinearGradientBrush) return HRESULT with Convention=>Stdcall;
      CreateRadialGradientBrush:access function(THIS:LPID2D1BitmapRenderTarget;radialGradientBrushProperties:LPCD2D1_RADIAL_GRADIENT_BRUSH_PROPERTIES;brushProperties:LPCD2D1_BRUSH_PROPERTIES;gradientStopCollection:LPID2D1GradientStopCollection;radialGradientBrush:LPLPID2D1RadialGradientBrush) return HRESULT with Convention=>Stdcall;
      CreateCompatibleRenderTarget:access function(THIS:LPID2D1BitmapRenderTarget;desiredSize:LPCD2D1_SIZE_F;desiredPixelSize:LPCD2D1_SIZE_U;desiredFormat:LPCD2D1_PIXEL_FORMAT;options:D2D1_COMPATIBLE_RENDER_TARGET_OPTIONS;bitmapRenderTarget:LPLPID2D1BitmapRenderTarget) return HRESULT with Convention=>Stdcall;
      CreateLayer:access function(THIS:LPID2D1BitmapRenderTarget;size:LPCD2D1_SIZE_F;layer:LPLPID2D1Layer) return HRESULT with Convention=>Stdcall;
      CreateMesh:access function(THIS:LPID2D1BitmapRenderTarget;mesh:LPLPID2D1Mesh) return HRESULT with Convention=>Stdcall;
      DrawLine:access function(THIS:LPID2D1BitmapRenderTarget;point0:D2D1_POINT_2F;point1:D2D1_POINT_2F;brush:LPID2D1Brush;strokeWidth:FLOAT;strokeStyle:LPID2D1StrokeStyle) return void with Convention=>Stdcall;
      DrawRectangle:access function(THIS:LPID2D1BitmapRenderTarget;rect:LPCD2D1_RECT_F;brush:LPID2D1Brush;strokeWidth:FLOAT;strokeStyle:LPID2D1StrokeStyle) return void with Convention=>Stdcall;
      FillRectangle:access function(THIS:LPID2D1BitmapRenderTarget;rect:LPCD2D1_RECT_F;brush:LPID2D1Brush) return void with Convention=>Stdcall;
      DrawRoundedRectangle:access function(THIS:LPID2D1BitmapRenderTarget;roundedRect:LPCD2D1_ROUNDED_RECT;brush:LPID2D1Brush;strokeWidth:FLOAT;strokeStyle:LPID2D1StrokeStyle) return void with Convention=>Stdcall;
      FillRoundedRectangle:access function(THIS:LPID2D1BitmapRenderTarget;roundedRect:LPCD2D1_ROUNDED_RECT;brush:LPID2D1Brush) return void with Convention=>Stdcall;
      DrawEllipse:access function(THIS:LPID2D1BitmapRenderTarget;ellipse:LPCD2D1_ELLIPSE;brush:LPID2D1Brush;strokeWidth:FLOAT;strokeStyle:LPID2D1StrokeStyle) return void with Convention=>Stdcall;
      FillEllipse:access function(THIS:LPID2D1BitmapRenderTarget;ellipse:LPCD2D1_ELLIPSE;brush:LPID2D1Brush) return void with Convention=>Stdcall;
      DrawGeometry:access function(THIS:LPID2D1BitmapRenderTarget;geometry:LPID2D1Geometry;brush:LPID2D1Brush;strokeWidth:FLOAT;strokeStyle:LPID2D1StrokeStyle) return void with Convention=>Stdcall;
      FillGeometry:access function(THIS:LPID2D1BitmapRenderTarget;geometry:LPID2D1Geometry;brush:LPID2D1Brush;opacityBrushtag2:LPID2D1Brush) return void with Convention=>Stdcall;
      FillMesh:access function(THIS:LPID2D1BitmapRenderTarget;mesh:LPID2D1Mesh;brush:LPID2D1Brush) return void with Convention=>Stdcall;
      FillOpacityMask:access function(THIS:LPID2D1BitmapRenderTarget;opacityMask:LPID2D1Bitmap;brush:LPID2D1Brush;content:D2D1_OPACITY_MASK_CONTENT;destinationRectangle:LPCD2D1_RECT_F;sourceRectangle:LPCD2D1_RECT_F) return void with Convention=>Stdcall;
      DrawBitmap:access function(THIS:LPID2D1BitmapRenderTarget;bitmap:LPID2D1Bitmap;destinationRectangle:LPCD2D1_RECT_F;opacity:FLOAT;interpolationMode:D2D1_BITMAP_INTERPOLATION_MODE;sourceRectangle:LPCD2D1_RECT_F) return void with Convention=>Stdcall;
      DrawText:access function(THIS:LPID2D1BitmapRenderTarget;string:LPCWCHAR;stringLength:UINT;textFormat:LPIDWriteTextFormat;layoutRect:LPCD2D1_RECT_F;defaultForegroundBrush:LPID2D1Brush;options:D2D1_DRAW_TEXT_OPTIONS;measuringMode:DWRITE_MEASURING_MODE) return void with Convention=>Stdcall;
      DrawTextLayout:access function(THIS:LPID2D1BitmapRenderTarget;origin:D2D1_POINT_2F;textLayout:LPIDWriteTextLayout;defaultForegroundBrush:LPID2D1Brush;options:D2D1_DRAW_TEXT_OPTIONS) return void with Convention=>Stdcall;
      DrawGlyphRun:access function(THIS:LPID2D1BitmapRenderTarget;baselineOrigin:D2D1_POINT_2F;glyphRun:LPCDWRITE_GLYPH_RUN;foregroundBrush:LPID2D1Brush;measuringMode:DWRITE_MEASURING_MODE) return void with Convention=>Stdcall;
      SetTransform:access function(THIS:LPID2D1BitmapRenderTarget;transform:LPCD2D1_MATRIX_3X2_F) return void with Convention=>Stdcall;
      GetTransform:access function(THIS:LPID2D1BitmapRenderTarget;transform:LPD2D1_MATRIX_3X2_F) return void with Convention=>Stdcall;
      SetAntialiasMode:access function(THIS:LPID2D1BitmapRenderTarget;antialiasMode:D2D1_ANTIALIAS_MODE) return void with Convention=>Stdcall;
      GetAntialiasMode:access function(THIS:LPID2D1BitmapRenderTarget) return D2D1_ANTIALIAS_MODE with Convention=>Stdcall;
      SetTextAntialiasMode:access function(THIS:LPID2D1BitmapRenderTarget;textAntialiasMode:D2D1_TEXT_ANTIALIAS_MODE) return void with Convention=>Stdcall;
      GetTextAntialiasMode:access function(THIS:LPID2D1BitmapRenderTarget) return D2D1_TEXT_ANTIALIAS_MODE with Convention=>Stdcall;
      SetTextRenderingParams:access function(THIS:LPID2D1BitmapRenderTarget;textRenderingParams:LPIDWriteRenderingParams) return void with Convention=>Stdcall;
      GetTextRenderingParams:access function(THIS:LPID2D1BitmapRenderTarget;textRenderingParams:LPLPIDWriteRenderingParams) return void with Convention=>Stdcall;
      SetTags:access function(THIS:LPID2D1BitmapRenderTarget;tag1:D2D1_TAG;tag2:D2D1_TAG) return void with Convention=>Stdcall;
      GetTags:access function(THIS:LPID2D1BitmapRenderTarget;tag1:LPD2D1_TAG;tag2:LPD2D1_TAG) return void with Convention=>Stdcall;
      PushLayer:access function(THIS:LPID2D1BitmapRenderTarget;layerParameters:LPCD2D1_LAYER_PARAMETERS;layer:LPID2D1Layer) return void with Convention=>Stdcall;
      PopLayer:access function(THIS:LPID2D1BitmapRenderTarget) return void with Convention=>Stdcall;
      Flush:access function(THIS:LPID2D1BitmapRenderTarget;tag1:LPD2D1_TAG;tag2:LPD2D1_TAG) return HRESULT with Convention=>Stdcall;
      SaveDrawingState:access function(THIS:LPID2D1BitmapRenderTarget;drawingStateBlock:LPID2D1DrawingStateBlock) return void with Convention=>Stdcall;
      RestoreDrawingState:access function(THIS:LPID2D1BitmapRenderTarget;drawingStateBlock:LPID2D1DrawingStateBlock) return void with Convention=>Stdcall;
      PushAxisAlignedClip:access function(THIS:LPID2D1BitmapRenderTarget;clipRect:LPCD2D1_RECT_F;antialiasMode:D2D1_ANTIALIAS_MODE) return void with Convention=>Stdcall;
      PopAxisAlignedClip:access function(THIS:LPID2D1BitmapRenderTarget) return void with Convention=>Stdcall;
      Clear:access function(THIS:LPID2D1BitmapRenderTarget;clearColortag2:LPCD2D1_COLOR_F) return void with Convention=>Stdcall;
      BeginDraw:access function(THIS:LPID2D1BitmapRenderTarget) return void with Convention=>Stdcall;
      EndDraw:access function(THIS:LPID2D1BitmapRenderTarget;tag1:LPD2D1_TAG;tag2:LPD2D1_TAG) return HRESULT with Convention=>Stdcall;
      GetPixelFormat:access function(THIS:LPID2D1BitmapRenderTarget) return D2D1_PIXEL_FORMAT with Convention=>Stdcall;
      SetDpi:access function(THIS:LPID2D1BitmapRenderTarget;dpiX:FLOAT;dpiY:FLOAT) return void with Convention=>Stdcall;
      GetDpi:access function(THIS:LPID2D1BitmapRenderTarget;dpiX:LPFLOAT;dpiY:LPFLOAT) return void with Convention=>Stdcall;
      GetSize:access function(THIS:LPID2D1BitmapRenderTarget) return D2D1_SIZE_F with Convention=>Stdcall;
      GetPixelSize:access function(THIS:LPID2D1BitmapRenderTarget) return D2D1_SIZE_U with Convention=>Stdcall;
      GetMaximumBitmapSize:access function(THIS:LPID2D1BitmapRenderTarget) return UINT32 with Convention=>Stdcall;
      IsSupported:access function(THIS:LPID2D1BitmapRenderTarget;renderTargetProperties:LPCD2D1_RENDER_TARGET_PROPERTIES) return BOOL with Convention=>Stdcall;
      GetBitmap:access function(THIS:LPID2D1BitmapRenderTarget;bitmap:LPLPID2D1Bitmap) return HRESULT with Convention=>Stdcall;
   end record;

   IID_ID2D1HwndRenderTarget : constant GUID:=uuidof("2cd90698-12e2-11dc-9fed-001143a055f9");

   type ID2D1HwndRenderTarget is record
      QueryInterface:access function(THIS:LPID2D1HwndRenderTarget;riid:REFIID;ppvObj:LPLPvoid) return HRESULT with Convention=>Stdcall;
      AddRef:access function(THIS:LPID2D1HwndRenderTarget) return ULONG with Convention=>Stdcall;
      Release:access function(THIS:LPID2D1HwndRenderTarget) return ULONG with Convention=>Stdcall;
      GetFactory:access function(factory:LPLPID2D1Factory) return void with Convention=>Stdcall;
      CreateBitmap:access function(THIS:LPID2D1HwndRenderTarget;size:D2D1_SIZE_U;srcData:LPCvoid;pitch:UINT32;bitmapProperties:LPCD2D1_BITMAP_PROPERTIES;bitmap:LPLPID2D1Bitmap) return HRESULT with Convention=>Stdcall;
      CreateBitmapFromWicBitmap:access function(THIS:LPID2D1HwndRenderTarget;wicBitmapSource:LPIWICBitmapSource;bitmapProperties:LPCD2D1_BITMAP_PROPERTIES;bitmap:LPLPID2D1Bitmap) return HRESULT with Convention=>Stdcall;
      CreateSharedBitmap:access function(THIS:LPID2D1HwndRenderTarget;riid:REFIID;data:LPvoid;bitmapProperties:LPCD2D1_BITMAP_PROPERTIES;bitmap:LPLPID2D1Bitmap) return HRESULT with Convention=>Stdcall;
      CreateBitmapBrush:access function(THIS:LPID2D1HwndRenderTarget;bitmap:LPID2D1Bitmap;bitmapBrushProperties:LPCD2D1_BITMAP_BRUSH_PROPERTIES;brushProperties:LPCD2D1_BRUSH_PROPERTIES;bitmapBrush:LPLPID2D1BitmapBrush) return HRESULT with Convention=>Stdcall;
      CreateSolidColorBrush:access function(THIS:LPID2D1HwndRenderTarget;color:LPCD2D1_COLOR_F;brushProperties:LPCD2D1_BRUSH_PROPERTIES;solidColorBrush:LPLPID2D1SolidColorBrush) return HRESULT with Convention=>Stdcall;
      CreateGradientStopCollection:access function(THIS:LPID2D1HwndRenderTarget;gradientStops:LPCD2D1_GRADIENT_STOP;gradientStopsCount:UINT;colorInterpolationGamma:D2D1_GAMMA;extendMode:D2D1_EXTEND_MODE;gradientStopCollection:LPLPID2D1GradientStopCollection) return HRESULT with Convention=>Stdcall;
      CreateLinearGradientBrush:access function(THIS:LPID2D1HwndRenderTarget;linearGradientBrushProperties:LPCD2D1_LINEAR_GRADIENT_BRUSH_PROPERTIES;brushProperties:LPCD2D1_BRUSH_PROPERTIES;gradientStopCollection:LPID2D1GradientStopCollection;linearGradientBrush:LPLPID2D1LinearGradientBrush) return HRESULT with Convention=>Stdcall;
      CreateRadialGradientBrush:access function(THIS:LPID2D1HwndRenderTarget;radialGradientBrushProperties:LPCD2D1_RADIAL_GRADIENT_BRUSH_PROPERTIES;brushProperties:LPCD2D1_BRUSH_PROPERTIES;gradientStopCollection:LPID2D1GradientStopCollection;radialGradientBrush:LPLPID2D1RadialGradientBrush) return HRESULT with Convention=>Stdcall;
      CreateCompatibleRenderTarget:access function(THIS:LPID2D1HwndRenderTarget;desiredSize:LPCD2D1_SIZE_F;desiredPixelSize:LPCD2D1_SIZE_U;desiredFormat:LPCD2D1_PIXEL_FORMAT;options:D2D1_COMPATIBLE_RENDER_TARGET_OPTIONS;bitmapRenderTarget:LPLPID2D1BitmapRenderTarget) return HRESULT with Convention=>Stdcall;
      CreateLayer:access function(THIS:LPID2D1HwndRenderTarget;size:LPCD2D1_SIZE_F;layer:LPLPID2D1Layer) return HRESULT with Convention=>Stdcall;
      CreateMesh:access function(THIS:LPID2D1HwndRenderTarget;mesh:LPLPID2D1Mesh) return HRESULT with Convention=>Stdcall;
      DrawLine:access function(THIS:LPID2D1HwndRenderTarget;point0:D2D1_POINT_2F;point1:D2D1_POINT_2F;brush:LPID2D1Brush;strokeWidth:FLOAT;strokeStyle:LPID2D1StrokeStyle) return void with Convention=>Stdcall;
      DrawRectangle:access function(THIS:LPID2D1HwndRenderTarget;rect:LPCD2D1_RECT_F;brush:LPID2D1Brush;strokeWidth:FLOAT;strokeStyle:LPID2D1StrokeStyle) return void with Convention=>Stdcall;
      FillRectangle:access function(THIS:LPID2D1HwndRenderTarget;rect:LPCD2D1_RECT_F;brush:LPID2D1Brush) return void with Convention=>Stdcall;
      DrawRoundedRectangle:access function(THIS:LPID2D1HwndRenderTarget;roundedRect:LPCD2D1_ROUNDED_RECT;brush:LPID2D1Brush;strokeWidth:FLOAT;strokeStyle:LPID2D1StrokeStyle) return void with Convention=>Stdcall;
      FillRoundedRectangle:access function(THIS:LPID2D1HwndRenderTarget;roundedRect:LPCD2D1_ROUNDED_RECT;brush:LPID2D1Brush) return void with Convention=>Stdcall;
      DrawEllipse:access function(THIS:LPID2D1HwndRenderTarget;ellipse:LPCD2D1_ELLIPSE;brush:LPID2D1Brush;strokeWidth:FLOAT;strokeStyle:LPID2D1StrokeStyle) return void with Convention=>Stdcall;
      FillEllipse:access function(THIS:LPID2D1HwndRenderTarget;ellipse:LPCD2D1_ELLIPSE;brush:LPID2D1Brush) return void with Convention=>Stdcall;
      DrawGeometry:access function(THIS:LPID2D1HwndRenderTarget;geometry:LPID2D1Geometry;brush:LPID2D1Brush;strokeWidth:FLOAT;strokeStyle:LPID2D1StrokeStyle) return void with Convention=>Stdcall;
      FillGeometry:access function(THIS:LPID2D1HwndRenderTarget;geometry:LPID2D1Geometry;brush:LPID2D1Brush;opacityBrush:LPID2D1Brush) return void with Convention=>Stdcall;
      FillMesh:access function(THIS:LPID2D1HwndRenderTarget;mesh:LPID2D1Mesh;brush:LPID2D1Brush) return void with Convention=>Stdcall;
      FillOpacityMask:access function(THIS:LPID2D1HwndRenderTarget;opacityMask:LPID2D1Bitmap;brush:LPID2D1Brush;content:D2D1_OPACITY_MASK_CONTENT;destinationRectangle:LPCD2D1_RECT_F;sourceRectangle:LPCD2D1_RECT_F) return void with Convention=>Stdcall;
      DrawBitmap:access function(THIS:LPID2D1HwndRenderTarget;bitmap:LPID2D1Bitmap;destinationRectangle:LPCD2D1_RECT_F;opacity:FLOAT;interpolationMode:D2D1_BITMAP_INTERPOLATION_MODE;sourceRectangle:LPCD2D1_RECT_F) return void with Convention=>Stdcall;
      DrawText:access function(THIS:LPID2D1HwndRenderTarget;string:LPCWCHAR;stringLength:UINT;textFormat:LPIDWriteTextFormat;layoutRect:LPCD2D1_RECT_F;defaultForegroundBrush:LPID2D1Brush;options:D2D1_DRAW_TEXT_OPTIONS;measuringMode:DWRITE_MEASURING_MODE) return void with Convention=>Stdcall;
      DrawTextLayout:access function(THIS:LPID2D1HwndRenderTarget;origin:D2D1_POINT_2F;textLayout:LPIDWriteTextLayout;defaultForegroundBrush:LPID2D1Brush;options:D2D1_DRAW_TEXT_OPTIONS) return void with Convention=>Stdcall;
      DrawGlyphRun:access function(THIS:LPID2D1HwndRenderTarget;baselineOrigin:D2D1_POINT_2F;glyphRun:LPCDWRITE_GLYPH_RUN;foregroundBrush:LPID2D1Brush;measuringMode:DWRITE_MEASURING_MODE) return void with Convention=>Stdcall;
      SetTransform:access function(THIS:LPID2D1HwndRenderTarget;transform:LPCD2D1_MATRIX_3X2_F) return void with Convention=>Stdcall;
      GetTransform:access function(THIS:LPID2D1HwndRenderTarget;transform:LPD2D1_MATRIX_3X2_F) return void with Convention=>Stdcall;
      SetAntialiasMode:access function(THIS:LPID2D1HwndRenderTarget;antialiasMode:D2D1_ANTIALIAS_MODE) return void with Convention=>Stdcall;
      GetAntialiasMode:access function(THIS:LPID2D1HwndRenderTarget) return D2D1_ANTIALIAS_MODE with Convention=>Stdcall;
      SetTextAntialiasMode:access function(THIS:LPID2D1HwndRenderTarget;textAntialiasMode:D2D1_TEXT_ANTIALIAS_MODE) return void with Convention=>Stdcall;
      GetTextAntialiasMode:access function(THIS:LPID2D1HwndRenderTarget) return D2D1_TEXT_ANTIALIAS_MODE with Convention=>Stdcall;
      SetTextRenderingParams:access function(THIS:LPID2D1HwndRenderTarget;textRenderingParams:LPIDWriteRenderingParams) return void with Convention=>Stdcall;
      GetTextRenderingParams:access function(THIS:LPID2D1HwndRenderTarget;textRenderingParams:LPLPIDWriteRenderingParams) return void with Convention=>Stdcall;
      SetTags:access function(THIS:LPID2D1HwndRenderTarget;tag1:D2D1_TAG;tag2:D2D1_TAG) return void with Convention=>Stdcall;
      GetTags:access function(THIS:LPID2D1HwndRenderTarget;tag1:LPD2D1_TAG;tag2:LPD2D1_TAG) return void with Convention=>Stdcall;
      PushLayer:access function(THIS:LPID2D1HwndRenderTarget;layerParameters:LPCD2D1_LAYER_PARAMETERS;layer:LPID2D1Layer) return void with Convention=>Stdcall;
      PopLayer:access function(THIS:LPID2D1HwndRenderTarget) return void with Convention=>Stdcall;
      Flush:access function(THIS:LPID2D1HwndRenderTarget;tag1:LPD2D1_TAG;tag2:LPD2D1_TAG) return HRESULT with Convention=>Stdcall;
      SaveDrawingState:access function(THIS:LPID2D1HwndRenderTarget;drawingStateBlock:LPID2D1DrawingStateBlock) return void with Convention=>Stdcall;
      RestoreDrawingState:access function(THIS:LPID2D1HwndRenderTarget;drawingStateBlock:LPID2D1DrawingStateBlock) return void with Convention=>Stdcall;
      PushAxisAlignedClip:access function(THIS:LPID2D1HwndRenderTarget;clipRect:LPCD2D1_RECT_F;antialiasMode:D2D1_ANTIALIAS_MODE) return void with Convention=>Stdcall;
      PopAxisAlignedClip:access function(THIS:LPID2D1HwndRenderTarget) return void with Convention=>Stdcall;
      Clear:access function(THIS:LPID2D1HwndRenderTarget;clearColor:LPCD2D1_COLOR_F) return void with Convention=>Stdcall;
      BeginDraw:access function(THIS:LPID2D1HwndRenderTarget) return void with Convention=>Stdcall;
      EndDraw:access function(THIS:LPID2D1HwndRenderTarget;tag1:LPD2D1_TAG;tag2:LPD2D1_TAG) return HRESULT with Convention=>Stdcall;
      GetPixelFormat:access function(THIS:LPID2D1HwndRenderTarget) return D2D1_PIXEL_FORMAT with Convention=>Stdcall;
      SetDpi:access function(THIS:LPID2D1HwndRenderTarget;dpiX:FLOAT;dpiY:FLOAT) return void with Convention=>Stdcall;
      GetDpi:access function(THIS:LPID2D1HwndRenderTarget;dpiX:LPFLOAT;dpiY:LPFLOAT) return void with Convention=>Stdcall;
      GetSize:access function(THIS:LPID2D1HwndRenderTarget) return D2D1_SIZE_F with Convention=>Stdcall;
      GetPixelSize:access function(THIS:LPID2D1HwndRenderTarget) return D2D1_SIZE_U with Convention=>Stdcall;
      GetMaximumBitmapSize:access function(THIS:LPID2D1HwndRenderTarget) return UINT32 with Convention=>Stdcall;
      IsSupported:access function(THIS:LPID2D1HwndRenderTarget;renderTargetProperties:LPCD2D1_RENDER_TARGET_PROPERTIES) return BOOL with Convention=>Stdcall;
      CheckWindowState:access function(THIS:LPID2D1HwndRenderTarget) return D2D1_WINDOW_STATE with Convention=>Stdcall;
      Resize:access function(THIS:LPID2D1HwndRenderTarget;pixelSize:LPCD2D1_SIZE_U) return HRESULT with Convention=>Stdcall;
      GetHwnd:access function(THIS:LPID2D1HwndRenderTarget) return HWND with Convention=>Stdcall;
   end record;

   IID_ID2D1GdiInteropRenderTarget : constant GUID:=uuidof("e0db51c3-6f77-4bae-b3d5-e47509b35838");

   type ID2D1GdiInteropRenderTarget is record
      QueryInterface:access function(THIS:LPID2D1GdiInteropRenderTarget;riid:REFIID;ppvObj:LPLPvoid) return HRESULT with Convention=>Stdcall;
      AddRef:access function(THIS:LPID2D1GdiInteropRenderTarget) return ULONG with Convention=>Stdcall;
      Release:access function(THIS:LPID2D1GdiInteropRenderTarget) return ULONG with Convention=>Stdcall;
      GetDC:access function(THIS:LPID2D1GdiInteropRenderTarget;mode:D2D1_DC_INITIALIZE_MODE;hdc:access windef.HDC) return HRESULT with Convention=>Stdcall;
      ReleaseDC:access function(THIS:LPID2D1GdiInteropRenderTarget;update:LPCRECT) return HRESULT with Convention=>Stdcall;
   end record;

   IID_ID2D1DCRenderTarget : constant GUID:=uuidof("1c51bc64-de61-46fd-9899-63a5d8f03950");

   type ID2D1DCRenderTarget is record
      QueryInterface:access function(THIS:LPID2D1DCRenderTarget;riid:REFIID;ppvObj:LPLPvoid) return HRESULT with Convention=>Stdcall;
      AddRef:access function(THIS:LPID2D1DCRenderTarget) return ULONG with Convention=>Stdcall;
      Release:access function(THIS:LPID2D1DCRenderTarget) return ULONG with Convention=>Stdcall;
      GetFactory:access function(factory:LPLPID2D1Factory) return void with Convention=>Stdcall;
      CreateBitmap:access function(THIS:LPID2D1DCRenderTarget;size:D2D1_SIZE_U;srcData:LPCvoid;pitch:UINT32;bitmapProperties:LPCD2D1_BITMAP_PROPERTIES;bitmap:LPLPID2D1Bitmap) return HRESULT with Convention=>Stdcall;
      CreateBitmapFromWicBitmap:access function(THIS:LPID2D1DCRenderTarget;wicBitmapSource:LPIWICBitmapSource;bitmapProperties:LPCD2D1_BITMAP_PROPERTIES;bitmap:LPLPID2D1Bitmap) return HRESULT with Convention=>Stdcall;
      CreateSharedBitmap:access function(THIS:LPID2D1DCRenderTarget;riid:REFIID;data:LPvoid;bitmapProperties:LPCD2D1_BITMAP_PROPERTIES;bitmap:LPLPID2D1Bitmap) return HRESULT with Convention=>Stdcall;
      CreateBitmapBrush:access function(THIS:LPID2D1DCRenderTarget;bitmap:LPID2D1Bitmap;bitmapBrushProperties:LPCD2D1_BITMAP_BRUSH_PROPERTIES;brushProperties:LPCD2D1_BRUSH_PROPERTIES;bitmapBrush:LPLPID2D1BitmapBrush) return HRESULT with Convention=>Stdcall;
      CreateSolidColorBrush:access function(THIS:LPID2D1DCRenderTarget;color:LPCD2D1_COLOR_F;brushProperties:LPCD2D1_BRUSH_PROPERTIES;solidColorBrush:LPLPID2D1SolidColorBrush) return HRESULT with Convention=>Stdcall;
      CreateGradientStopCollection:access function(THIS:LPID2D1DCRenderTarget;gradientStops:LPCD2D1_GRADIENT_STOP;gradientStopsCount:UINT;colorInterpolationGamma:D2D1_GAMMA;extendMode:D2D1_EXTEND_MODE;gradientStopCollection:LPLPID2D1GradientStopCollection) return HRESULT with Convention=>Stdcall;
      CreateLinearGradientBrush:access function(THIS:LPID2D1DCRenderTarget;linearGradientBrushProperties:LPCD2D1_LINEAR_GRADIENT_BRUSH_PROPERTIES;brushProperties:LPCD2D1_BRUSH_PROPERTIES;gradientStopCollection:LPID2D1GradientStopCollection;linearGradientBrush:LPLPID2D1LinearGradientBrush) return HRESULT with Convention=>Stdcall;
      CreateRadialGradientBrush:access function(THIS:LPID2D1DCRenderTarget;radialGradientBrushProperties:LPCD2D1_RADIAL_GRADIENT_BRUSH_PROPERTIES;brushProperties:LPCD2D1_BRUSH_PROPERTIES;gradientStopCollection:LPID2D1GradientStopCollection;radialGradientBrush:LPLPID2D1RadialGradientBrush) return HRESULT with Convention=>Stdcall;
      CreateCompatibleRenderTarget:access function(THIS:LPID2D1DCRenderTarget;desiredSize:LPCD2D1_SIZE_F;desiredPixelSize:LPCD2D1_SIZE_U;desiredFormat:LPCD2D1_PIXEL_FORMAT;options:D2D1_COMPATIBLE_RENDER_TARGET_OPTIONS;bitmapRenderTarget:LPLPID2D1BitmapRenderTarget) return HRESULT with Convention=>Stdcall;
      CreateLayer:access function(THIS:LPID2D1DCRenderTarget;size:LPCD2D1_SIZE_F;layer:LPLPID2D1Layer) return HRESULT with Convention=>Stdcall;
      CreateMesh:access function(THIS:LPID2D1DCRenderTarget;mesh:LPLPID2D1Mesh) return HRESULT with Convention=>Stdcall;
      DrawLine:access function(THIS:LPID2D1DCRenderTarget;point0:D2D1_POINT_2F;point1:D2D1_POINT_2F;brush:LPID2D1Brush;strokeWidth:FLOAT;strokeStyle:LPID2D1StrokeStyle) return void with Convention=>Stdcall;
      DrawRectangle:access function(THIS:LPID2D1DCRenderTarget;rect:LPCD2D1_RECT_F;brush:LPID2D1Brush;strokeWidth:FLOAT;strokeStyle:LPID2D1StrokeStyle) return void with Convention=>Stdcall;
      FillRectangle:access function(THIS:LPID2D1DCRenderTarget;rect:LPCD2D1_RECT_F;brush:LPID2D1Brush) return void with Convention=>Stdcall;
      DrawRoundedRectangle:access function(THIS:LPID2D1DCRenderTarget;roundedRect:LPCD2D1_ROUNDED_RECT;brush:LPID2D1Brush;strokeWidth:FLOAT;strokeStyle:LPID2D1StrokeStyle) return void with Convention=>Stdcall;
      FillRoundedRectangle:access function(THIS:LPID2D1DCRenderTarget;roundedRect:LPCD2D1_ROUNDED_RECT;brush:LPID2D1Brush) return void with Convention=>Stdcall;
      DrawEllipse:access function(THIS:LPID2D1DCRenderTarget;ellipse:LPCD2D1_ELLIPSE;brush:LPID2D1Brush;strokeWidth:FLOAT;strokeStyle:LPID2D1StrokeStyle) return void with Convention=>Stdcall;
      FillEllipse:access function(THIS:LPID2D1DCRenderTarget;ellipse:LPCD2D1_ELLIPSE;brush:LPID2D1Brush) return void with Convention=>Stdcall;
      DrawGeometry:access function(THIS:LPID2D1DCRenderTarget;geometry:LPID2D1Geometry;brush:LPID2D1Brush;strokeWidth:FLOAT;strokeStyle:LPID2D1StrokeStyle) return void with Convention=>Stdcall;
      FillGeometry:access function(THIS:LPID2D1DCRenderTarget;geometry:LPID2D1Geometry;brush:LPID2D1Brush;opacityBrushtag2:LPID2D1Brush) return void with Convention=>Stdcall;
      FillMesh:access function(THIS:LPID2D1DCRenderTarget;mesh:LPID2D1Mesh;brush:LPID2D1Brush) return void with Convention=>Stdcall;
      FillOpacityMask:access function(THIS:LPID2D1DCRenderTarget;opacityMask:LPID2D1Bitmap;brush:LPID2D1Brush;content:D2D1_OPACITY_MASK_CONTENT;destinationRectangletag2:LPCD2D1_RECT_F;sourceRectangletag2:LPCD2D1_RECT_F) return void with Convention=>Stdcall;
      DrawBitmap:access function(THIS:LPID2D1DCRenderTarget;bitmap:LPID2D1Bitmap;destinationRectangletag2:LPCD2D1_RECT_F;opacity:FLOAT;interpolationMode:D2D1_BITMAP_INTERPOLATION_MODE;sourceRectangletag2:LPCD2D1_RECT_F) return void with Convention=>Stdcall;
      DrawText:access function(THIS:LPID2D1DCRenderTarget;string:LPCWCHAR;stringLength:UINT;textFormat:LPIDWriteTextFormat;layoutRect:LPCD2D1_RECT_F;defaultForegroundBrush:LPID2D1Brush;options:D2D1_DRAW_TEXT_OPTIONS;measuringMode:DWRITE_MEASURING_MODE) return void with Convention=>Stdcall;
      DrawTextLayout:access function(THIS:LPID2D1DCRenderTarget;origin:D2D1_POINT_2F;textLayout:LPIDWriteTextLayout;defaultForegroundBrush:LPID2D1Brush;options:D2D1_DRAW_TEXT_OPTIONS) return void with Convention=>Stdcall;
      DrawGlyphRun:access function(THIS:LPID2D1DCRenderTarget;baselineOrigin:D2D1_POINT_2F;glyphRun:LPCDWRITE_GLYPH_RUN;foregroundBrush:LPID2D1Brush;measuringMode:DWRITE_MEASURING_MODE) return void with Convention=>Stdcall;
      SetTransform:access function(THIS:LPID2D1DCRenderTarget;transform:LPCD2D1_MATRIX_3X2_F) return void with Convention=>Stdcall;
      GetTransform:access function(THIS:LPID2D1DCRenderTarget;transform:LPD2D1_MATRIX_3X2_F) return void with Convention=>Stdcall;
      SetAntialiasMode:access function(THIS:LPID2D1DCRenderTarget;antialiasMode:D2D1_ANTIALIAS_MODE) return void with Convention=>Stdcall;
      GetAntialiasMode:access function(THIS:LPID2D1DCRenderTarget) return D2D1_ANTIALIAS_MODE with Convention=>Stdcall;
      SetTextAntialiasMode:access function(THIS:LPID2D1DCRenderTarget;textAntialiasMode:D2D1_TEXT_ANTIALIAS_MODE) return void with Convention=>Stdcall;
      GetTextAntialiasMode:access function(THIS:LPID2D1DCRenderTarget) return D2D1_TEXT_ANTIALIAS_MODE with Convention=>Stdcall;
      SetTextRenderingParams:access function(THIS:LPID2D1DCRenderTarget;textRenderingParamstag2:LPIDWriteRenderingParams) return void with Convention=>Stdcall;
      GetTextRenderingParams:access function(THIS:LPID2D1DCRenderTarget;textRenderingParams:LPLPIDWriteRenderingParams) return void with Convention=>Stdcall;
      SetTags:access function(THIS:LPID2D1DCRenderTarget;tag1:D2D1_TAG;tag2:D2D1_TAG) return void with Convention=>Stdcall;
      GetTags:access function(THIS:LPID2D1DCRenderTarget;tag1:LPD2D1_TAG;tag2:LPD2D1_TAG) return void with Convention=>Stdcall;
      PushLayer:access function(THIS:LPID2D1DCRenderTarget;layerParameters:LPCD2D1_LAYER_PARAMETERS;layer:LPID2D1Layer) return void with Convention=>Stdcall;
      PopLayer:access function(THIS:LPID2D1DCRenderTarget) return void with Convention=>Stdcall;
      Flush:access function(THIS:LPID2D1DCRenderTarget;tag1:LPD2D1_TAG;tag2:LPD2D1_TAG) return HRESULT with Convention=>Stdcall;
      SaveDrawingState:access function(THIS:LPID2D1DCRenderTarget;drawingStateBlock:LPID2D1DrawingStateBlock) return void with Convention=>Stdcall;
      RestoreDrawingState:access function(THIS:LPID2D1DCRenderTarget;drawingStateBlock:LPID2D1DrawingStateBlock) return void with Convention=>Stdcall;
      PushAxisAlignedClip:access function(THIS:LPID2D1DCRenderTarget;clipRect:LPCD2D1_RECT_F;antialiasMode:D2D1_ANTIALIAS_MODE) return void with Convention=>Stdcall;
      PopAxisAlignedClip:access function(THIS:LPID2D1DCRenderTarget) return void with Convention=>Stdcall;
      Clear:access function(THIS:LPID2D1DCRenderTarget;clearColortag2:LPCD2D1_COLOR_F) return void with Convention=>Stdcall;
      BeginDraw:access function(THIS:LPID2D1DCRenderTarget) return void with Convention=>Stdcall;
      EndDraw:access function(THIS:LPID2D1DCRenderTarget;tag1:LPD2D1_TAG;tag2:LPD2D1_TAG) return HRESULT with Convention=>Stdcall;
      GetPixelFormat:access function(THIS:LPID2D1DCRenderTarget) return D2D1_PIXEL_FORMAT with Convention=>Stdcall;
      SetDpi:access function(THIS:LPID2D1DCRenderTarget;dpiX:FLOAT;dpiY:FLOAT) return void with Convention=>Stdcall;
      GetDpi:access function(THIS:LPID2D1DCRenderTarget;dpiX:LPFLOAT;dpiY:LPFLOAT) return void with Convention=>Stdcall;
      GetSize:access function(THIS:LPID2D1DCRenderTarget) return D2D1_SIZE_F with Convention=>Stdcall;
      GetPixelSize:access function(THIS:LPID2D1DCRenderTarget) return D2D1_SIZE_U with Convention=>Stdcall;
      GetMaximumBitmapSize:access function(THIS:LPID2D1DCRenderTarget) return UINT32 with Convention=>Stdcall;
      IsSupported:access function(THIS:LPID2D1DCRenderTarget;renderTargetProperties:LPCD2D1_RENDER_TARGET_PROPERTIES) return BOOL with Convention=>Stdcall;
      BindDC:access function(THIS:LPID2D1DCRenderTarget;hDC:windef.HDC;pSubRect:LPCRECT) return HRESULT with Convention=>Stdcall;
   end record;

   IID_ID2D1Factory : constant GUID:=uuidof("06152247-6f50-465a-9245-118bfd3b6007");

   type ID2D1Factory is record
      QueryInterface:access function(THIS:LPID2D1Factory;riid:REFIID;ppvObj:LPLPvoid) return HRESULT with Convention=>Stdcall;
      AddRef:access function(THIS:LPID2D1Factory) return ULONG with Convention=>Stdcall;
      Release:access function(THIS:LPID2D1Factory) return ULONG with Convention=>Stdcall;
      ReloadSystemMetrics:access function(THIS:LPID2D1Factory) return HRESULT with Convention=>Stdcall;
      GetDesktopDpi:access function(THIS:LPID2D1Factory;dpiX:LPFLOAT;dpiY:LPFLOAT) return void with Convention=>Stdcall;
      CreateRectangleGeometry:access function(THIS:LPID2D1Factory;rectangle:LPCD2D1_RECT_F;rectangleGeometry:LPLPID2D1RectangleGeometry) return HRESULT with Convention=>Stdcall;
      CreateRoundedRectangleGeometry:access function(THIS:LPID2D1Factory;roundedRectangle:LPCD2D1_ROUNDED_RECT;roundedRectangleGeometry:LPLPID2D1RoundedRectangleGeometry) return HRESULT with Convention=>Stdcall;
      CreateEllipseGeometry:access function(THIS:LPID2D1Factory;ellipse:LPCD2D1_ELLIPSE;ellipseGeometry:LPLPID2D1EllipseGeometry) return HRESULT with Convention=>Stdcall;
      CreateGeometryGroup:access function(THIS:LPID2D1Factory;fillMode:D2D1_FILL_MODE;geometries:LPLPID2D1Geometry;geometriesCount:UINT;geometryGroup:LPLPID2D1GeometryGroup) return HRESULT with Convention=>Stdcall;
      CreateTransformedGeometry:access function(THIS:LPID2D1Factory;sourceGeometry:LPID2D1Geometry;transform:LPCD2D1_MATRIX_3X2_F;transformedGeometry:LPLPID2D1TransformedGeometry) return HRESULT with Convention=>Stdcall;
      CreatePathGeometry:access function(THIS:LPID2D1Factory;pathGeometry:LPLPID2D1PathGeometry) return HRESULT with Convention=>Stdcall;
      CreateStrokeStyle:access function(THIS:LPID2D1Factory;strokeStyleProperties:LPCD2D1_STROKE_STYLE_PROPERTIES;dashes:LPCFLOAT;dashesCount:UINT;strokeStyle:LPLPID2D1StrokeStyle) return HRESULT with Convention=>Stdcall;
      CreateDrawingStateBlock:access function(THIS:LPID2D1Factory;drawingStateDescription:LPCD2D1_DRAWING_STATE_DESCRIPTION;textRenderingParams:LPIDWriteRenderingParams;drawingStateBlock:LPLPID2D1DrawingStateBlock) return HRESULT with Convention=>Stdcall;
      CreateWicBitmapRenderTarget:access function(THIS:LPID2D1Factory;target:LPIWICBitmap;renderTargetProperties:LPCD2D1_RENDER_TARGET_PROPERTIES;renderTarget:LPLPID2D1RenderTarget) return HRESULT with Convention=>Stdcall;
      CreateHwndRenderTarget:access function(THIS:LPID2D1Factory;renderTargetProperties:LPCD2D1_RENDER_TARGET_PROPERTIES;hwndRenderTargetProperties:LPCD2D1_HWND_RENDER_TARGET_PROPERTIES;hwndRenderTarget:LPLPID2D1HwndRenderTarget) return HRESULT with Convention=>Stdcall;
      CreateDxgiSurfaceRenderTarget:access function(THIS:LPID2D1Factory;dxgiSurface:LPIDXGISurface;renderTargetProperties:LPCD2D1_RENDER_TARGET_PROPERTIES;renderTarget:LPLPID2D1RenderTarget) return HRESULT with Convention=>Stdcall;
      CreateDCRenderTarget:access function(THIS:LPID2D1Factory;renderTargetProperties:LPCD2D1_RENDER_TARGET_PROPERTIES;dcRenderTarget:LPLPID2D1DCRenderTarget) return HRESULT with Convention=>Stdcall;
   end record;

   --
   -- THE END.
   --

end D2D1;












猜你喜欢

转载自blog.csdn.net/adacore/article/details/83591622
今日推荐