2 * Copyright 2013 Nikolay Sivov for CodeWeavers
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
21 import
"d2dbasetypes.h";
23 interface ID2D1Factory
;
24 interface ID2D1RenderTarget
;
25 interface IDWriteRenderingParams
;
27 typedef D2D_POINT_2F D2D1_POINT_2F
;
28 typedef D2D_MATRIX_3X2_F D2D1_MATRIX_3X2_F
;
29 typedef D2D_RECT_F D2D1_RECT_F
;
30 typedef D2D_SIZE_F D2D1_SIZE_F
;
31 typedef UINT64 D2D1_TAG
;
32 typedef D2D_SIZE_U D2D1_SIZE_U
;
33 typedef D2D_POINT_2U D2D1_POINT_2U
;
34 typedef D2D_RECT_U D2D1_RECT_U
;
35 typedef D2D_COLOR_F D2D1_COLOR_F
;
39 D2D1_INTERPOLATION_MODE_DEFINITION_NEAREST_NEIGHBOR
= 0,
40 D2D1_INTERPOLATION_MODE_DEFINITION_LINEAR
= 1,
41 D2D1_INTERPOLATION_MODE_DEFINITION_CUBIC
= 2,
42 D2D1_INTERPOLATION_MODE_DEFINITION_MULTI_SAMPLE_LINEAR
= 3,
43 D2D1_INTERPOLATION_MODE_DEFINITION_ANISOTROPIC
= 4,
44 D2D1_INTERPOLATION_MODE_DEFINITION_HIGH_QUALITY_CUBIC
= 5,
45 D2D1_INTERPOLATION_MODE_DEFINITION_FANT
= 6,
46 D2D1_INTERPOLATION_MODE_DEFINITION_MIPMAP_LINEAR
= 7,
49 typedef enum D2D1_DEBUG_LEVEL
51 D2D1_DEBUG_LEVEL_NONE
= 0,
52 D2D1_DEBUG_LEVEL_ERROR
= 1,
53 D2D1_DEBUG_LEVEL_WARNING
= 2,
54 D2D1_DEBUG_LEVEL_INFORMATION
= 3,
55 D2D1_DEBUG_LEVEL_FORCE_DWORD
= 0xffffffff,
58 typedef enum D2D1_FACTORY_TYPE
60 D2D1_FACTORY_TYPE_SINGLE_THREADED
= 0,
61 D2D1_FACTORY_TYPE_MULTI_THREADED
= 1,
62 D2D1_FACTORY_TYPE_FORCE_DWORD
= 0xfffffff,
65 typedef enum D2D1_FILL_MODE
67 D2D1_FILL_MODE_ALTERNATE
= 0,
68 D2D1_FILL_MODE_WINDING
= 1,
69 D2D1_FILL_MODE_FORCE_DWORD
= 0xffffffff
72 typedef enum D2D1_PATH_SEGMENT
74 D2D1_PATH_SEGMENT_NONE
= 0,
75 D2D1_PATH_SEGMENT_FORCE_UNSTROKED
= 1,
76 D2D1_PATH_SEGMENT_FORCE_ROUND_LINE_JOIN
= 2,
77 D2D1_PATH_SEGMENT_FORCE_DWORD
= 0xffffffff
80 typedef enum D2D1_FIGURE_BEGIN
82 D2D1_FIGURE_BEGIN_FILLED
= 0,
83 D2D1_FIGURE_BEGIN_HOLLOW
= 1,
84 D2D1_FIGURE_BEGIN_FORCE_DWORD
= 0xffffffff
87 typedef enum D2D1_FIGURE_END
89 D2D1_FIGURE_END_OPEN
= 0,
90 D2D1_FIGURE_END_CLOSED
= 1,
91 D2D1_FIGURE_END_FORCE_DWORD
= 0xffffffff
94 typedef enum D2D1_CAP_STYLE
96 D2D1_CAP_STYLE_FLAT
= 0,
97 D2D1_CAP_STYLE_SQUARE
= 1,
98 D2D1_CAP_STYLE_ROUND
= 2,
99 D2D1_CAP_STYLE_TRIANGLE
= 3,
100 D2D1_CAP_STYLE_FORCE_DWORD
= 0xffffffff,
103 typedef enum D2D1_LINE_JOIN
105 D2D1_LINE_JOIN_MITER
= 0,
106 D2D1_LINE_JOIN_BEVEL
= 1,
107 D2D1_LINE_JOIN_ROUND
= 2,
108 D2D1_LINE_JOIN_MITER_OR_BEVEL
= 3,
109 D2D1_LINE_JOIN_FORCE_DWORD
= 0xffffffff,
112 typedef enum D2D1_DASH_STYLE
114 D2D1_DASH_STYLE_SOLID
= 0,
115 D2D1_DASH_STYLE_DASH
= 1,
116 D2D1_DASH_STYLE_DOT
= 2,
117 D2D1_DASH_STYLE_DASH_DOT
= 3,
118 D2D1_DASH_STYLE_DASH_DOT_DOT
= 4,
119 D2D1_DASH_STYLE_CUSTOM
= 5,
120 D2D1_DASH_STYLE_FORCE_DWORD
= 0xffffffff,
123 typedef enum D2D1_GEOMETRY_RELATION
125 D2D1_GEOMETRY_RELATION_UNKNOWN
= 0,
126 D2D1_GEOMETRY_RELATION_DISJOINT
= 1,
127 D2D1_GEOMETRY_RELATION_IS_CONTAINED
= 2,
128 D2D1_GEOMETRY_RELATION_CONTAINS
= 3,
129 D2D1_GEOMETRY_RELATION_OVERLAP
= 4,
130 D2D1_GEOMETRY_RELATION_FORCE_DWORD
= 0xffffffff,
131 } D2D1_GEOMETRY_RELATION
;
133 typedef enum D2D1_GEOMETRY_SIMPLIFICATION_OPTION
135 D2D1_GEOMETRY_SIMPLIFICATION_OPTION_CUBICS_AND_LINES
= 0,
136 D2D1_GEOMETRY_SIMPLIFICATION_OPTION_LINES
= 1,
137 D2D1_GEOMETRY_SIMPLIFICATION_OPTION_FORCE_DWORD
= 0xffffffff,
138 } D2D1_GEOMETRY_SIMPLIFICATION_OPTION
;
140 typedef enum D2D1_COMBINE_MODE
142 D2D1_COMBINE_MODE_UNION
= 0,
143 D2D1_COMBINE_MODE_INTERSECT
= 1,
144 D2D1_COMBINE_MODE_XOR
= 2,
145 D2D1_COMBINE_MODE_EXCLUDE
= 3,
146 D2D1_COMBINE_MODE_FORCE_DWORD
= 0xffffffff,
149 typedef enum D2D1_SWEEP_DIRECTION
151 D2D1_SWEEP_DIRECTION_COUNTER_CLOCKWISE
= 0,
152 D2D1_SWEEP_DIRECTION_CLOCKWISE
= 1,
153 D2D1_SWEEP_DIRECTION_FORCE_DWORD
= 0xffffffff,
154 } D2D1_SWEEP_DIRECTION
;
156 typedef enum D2D1_ARC_SIZE
158 D2D1_ARC_SIZE_SMALL
= 0,
159 D2D1_ARC_SIZE_LARGE
= 1,
160 D2D1_ARC_SIZE_FORCE_DWORD
= 0xffffffff,
163 typedef enum D2D1_ANTIALIAS_MODE
165 D2D1_ANTIALIAS_MODE_PER_PRIMITIVE
= 0,
166 D2D1_ANTIALIAS_MODE_ALIASED
= 1,
167 D2D1_ANTIALIAS_MODE_FORCE_DWORD
= 0xffffffff,
168 } D2D1_ANTIALIAS_MODE
;
170 typedef enum D2D1_TEXT_ANTIALIAS_MODE
172 D2D1_TEXT_ANTIALIAS_MODE_DEFAULT
= 0,
173 D2D1_TEXT_ANTIALIAS_MODE_CLEARTYPE
= 1,
174 D2D1_TEXT_ANTIALIAS_MODE_GRAYSCALE
= 2,
175 D2D1_TEXT_ANTIALIAS_MODE_ALIASED
= 3,
176 D2D1_TEXT_ANTIALIAS_MODE_FORCE_DWORD
= 0xffffffff,
177 } D2D1_TEXT_ANTIALIAS_MODE
;
179 typedef enum D2D1_EXTEND_MODE
181 D2D1_EXTEND_MODE_CLAMP
= 0,
182 D2D1_EXTEND_MODE_WRAP
= 1,
183 D2D1_EXTEND_MODE_MIRROR
= 2,
184 D2D1_EXTEND_MODE_FORCE_DWORD
= 0xffffffff,
187 typedef enum D2D1_BITMAP_INTERPOLATION_MODE
189 D2D1_BITMAP_INTERPOLATION_MODE_NEAREST_NEIGHBOR
= D2D1_INTERPOLATION_MODE_DEFINITION_NEAREST_NEIGHBOR
,
190 D2D1_BITMAP_INTERPOLATION_MODE_LINEAR
= D2D1_INTERPOLATION_MODE_DEFINITION_LINEAR
,
191 D2D1_BITMAP_INTERPOLATION_MODE_FORCE_DWORD
= 0xffffffff,
192 } D2D1_BITMAP_INTERPOLATION_MODE
;
194 typedef enum D2D1_GAMMA
198 D2D1_GAMMA_FORCE_DWORD
= 0xffffffff,
201 typedef struct D2D1_BEZIER_SEGMENT
203 D2D1_POINT_2F point1
;
204 D2D1_POINT_2F point2
;
205 D2D1_POINT_2F point3
;
206 } D2D1_BEZIER_SEGMENT
;
208 typedef struct D2D1_FACTORY_OPTIONS
210 D2D1_DEBUG_LEVEL debugLevel
;
211 } D2D1_FACTORY_OPTIONS
;
213 typedef struct D2D1_TRIANGLE
215 D2D1_POINT_2F point1
;
216 D2D1_POINT_2F point2
;
217 D2D1_POINT_2F point3
;
220 typedef struct D2D1_ROUNDED_RECT
227 typedef struct D2D1_ELLIPSE
234 typedef struct D2D1_QUADRATIC_BEZIER_SEGMENT
236 D2D1_POINT_2F point1
;
237 D2D1_POINT_2F point2
;
238 } D2D1_QUADRATIC_BEZIER_SEGMENT
;
240 typedef struct D2D1_ARC_SEGMENT
245 D2D1_SWEEP_DIRECTION sweepDirection
;
246 D2D1_ARC_SIZE arcSize
;
249 typedef struct D2D1_DRAWING_STATE_DESCRIPTION
251 D2D1_ANTIALIAS_MODE antialiasMode
;
252 D2D1_TEXT_ANTIALIAS_MODE textAntialiasMode
;
255 D2D1_MATRIX_3X2_F transform
;
256 } D2D1_DRAWING_STATE_DESCRIPTION
;
258 typedef struct D2D1_GRADIENT_STOP
262 } D2D1_GRADIENT_STOP
;
267 uuid(2cd90691
-12e2
-11dc
-9fed
-001143a055f9
)
269 interface ID2D1Resource
: IUnknown
272 [out] ID2D1Factory
**factory
279 uuid(2cd9069d
-12e2
-11dc
-9fed
-001143a055f9
)
281 interface ID2D1StrokeStyle
: ID2D1Resource
283 D2D1_CAP_STYLE GetStartCap
();
284 D2D1_CAP_STYLE GetEndCap
();
285 D2D1_CAP_STYLE GetDashCap
();
286 float GetMiterLimit
();
287 D2D1_LINE_JOIN GetLineJoin
();
288 float GetDashOffset
();
289 D2D1_DASH_STYLE GetDashStyle
();
290 UINT32 GetDashesCount
();
292 [out, size_is(count
)] float *dashes
,
300 uuid(2cd9069e
-12e2
-11dc
-9fed
-001143a055f9
)
302 interface ID2D1SimplifiedGeometrySink
: IUnknown
304 void SetFillMode
(D2D1_FILL_MODE mode
);
305 void SetSegmentFlags
(D2D1_PATH_SEGMENT vertexFlags
);
306 void BeginFigure
(D2D1_POINT_2F startPoint
, D2D1_FIGURE_BEGIN figureBegin
);
307 void AddLines
(const D2D1_POINT_2F
*points
, UINT32 count
);
308 void AddBeziers
(const D2D1_BEZIER_SEGMENT
*beziers
, UINT32 count
);
309 void EndFigure
(D2D1_FIGURE_END figureEnd
);
316 uuid(2cd906c1
-12e2
-11dc
-9fed
-001143a055f9
)
318 interface ID2D1TessellationSink
: IUnknown
321 [in, size_is(count
)] const D2D1_TRIANGLE
*triangles
,
330 uuid(2cd906a1
-12e2
-11dc
-9fed
-001143a055f9
)
332 interface ID2D1Geometry
: ID2D1Resource
335 [in] const D2D1_MATRIX_3X2_F
*transform
,
336 [out] D2D1_RECT_F
*bounds
338 HRESULT GetWidenedBounds
(
339 [in] float stroke_width
,
340 [in] ID2D1StrokeStyle
*stroke_style
,
341 [in] const D2D1_MATRIX_3X2_F
*transform
,
342 [in] float tolerance
,
343 [out] D2D1_RECT_F
*bounds
345 HRESULT StrokeContainsPoint
(
346 [in] D2D1_POINT_2F point
,
347 [in] float stroke_width
,
348 [in] ID2D1StrokeStyle
*stroke_style
,
349 [in] const D2D1_MATRIX_3X2_F
*transform
,
350 [in] float tolerance
,
353 HRESULT FillContainsPoint
(
354 [in] D2D1_POINT_2F point
,
355 [in] const D2D1_MATRIX_3X2_F
*transform
,
356 [in] float tolerance
,
359 HRESULT CompareWithGeometry
(
360 [in] ID2D1Geometry
*geometry
,
361 [in] const D2D1_MATRIX_3X2_F
*transform
,
362 [in] float tolerance
,
363 [out] D2D1_GEOMETRY_RELATION
*relation
366 [in] D2D1_GEOMETRY_SIMPLIFICATION_OPTION option
,
367 [in] const D2D1_MATRIX_3X2_F
*transform
,
368 [in] float tolerance
,
369 [in] ID2D1SimplifiedGeometrySink
*sink
372 [in] const D2D1_MATRIX_3X2_F
*transform
,
373 [in] float tolerance
,
374 [in] ID2D1TessellationSink
*sink
376 HRESULT CombineWithGeometry
(
377 [in] ID2D1Geometry
*geometry
,
378 [in] D2D1_COMBINE_MODE combine_mode
,
379 [in] const D2D1_MATRIX_3X2_F
*transform
,
380 [in] float tolerance
,
381 [in] ID2D1SimplifiedGeometrySink
*sink
384 [in] const D2D1_MATRIX_3X2_F
*transform
,
385 [in] float tolerance
,
386 [in] ID2D1SimplifiedGeometrySink
*sink
389 [in] const D2D1_MATRIX_3X2_F
*transform
,
390 [in] float tolerance
,
393 HRESULT ComputeLength
(
394 [in] const D2D1_MATRIX_3X2_F
*transform
,
395 [in] float tolerance
,
398 HRESULT ComputePointAtLength
(
400 [in] const D2D1_MATRIX_3X2_F
*transform
,
401 [in] float tolerance
,
402 [out] D2D1_POINT_2F
*point
,
403 [out] D2D1_POINT_2F
*tangent
406 [in] float stroke_width
,
407 [in] ID2D1StrokeStyle
*stroke_style
,
408 [in] const D2D1_MATRIX_3X2_F
*transform
,
409 [in] float tolerance
,
410 [in] ID2D1SimplifiedGeometrySink
*sink
417 uuid(2cd906a2
-12e2
-11dc
-9fed
-001143a055f9
)
419 interface ID2D1RectangleGeometry
: ID2D1Geometry
422 [out] D2D1_RECT_F
*rect
429 uuid(2cd906a3
-12e2
-11dc
-9fed
-001143a055f9
)
431 interface ID2D1RoundedRectangleGeometry
: ID2D1Geometry
434 [out] D2D1_ROUNDED_RECT
*rect
441 uuid(2cd906a4
-12e2
-11dc
-9fed
-001143a055f9
)
443 interface ID2D1EllipseGeometry
: ID2D1Geometry
446 [out] D2D1_ELLIPSE
*ellipse
453 uuid(2cd906a6
-12e2
-11dc
-9fed
-001143a055f9
)
455 interface ID2D1GeometryGroup
: ID2D1Geometry
457 D2D1_FILL_MODE GetFillMode
();
458 UINT32 GetSourceGeometryCount
();
459 void GetSourceGeometries
(
460 [out, size_is(geometry_count
)] ID2D1Geometry
**geometry
,
461 [in] UINT32 geometry_count
468 uuid(2cd906bb
-12e2
-11dc
-9fed
-001143a055f9
)
470 interface ID2D1TransformedGeometry
: ID2D1Geometry
472 void GetSourceGeometry
(
473 [out] ID2D1Geometry
**geometry
476 [out] D2D1_MATRIX_3X2_F
*transform
483 uuid(2cd9069f
-12e2
-11dc
-9fed
-001143a055f9
)
485 interface ID2D1GeometrySink
: ID2D1SimplifiedGeometrySink
488 [in] D2D1_POINT_2F point
491 [in] const D2D1_BEZIER_SEGMENT
*bezier
493 void AddQuadraticBezier
(
494 [in] const D2D1_QUADRATIC_BEZIER_SEGMENT
*bezier
496 void AddQuadraticBeziers
(
497 [in, size_is(bezier_count
)] const D2D1_QUADRATIC_BEZIER_SEGMENT
*beziers
,
498 [in] UINT32 bezier_count
501 [in] const D2D1_ARC_SEGMENT
*arc
508 uuid(2cd906a5
-12e2
-11dc
-9fed
-001143a055f9
)
510 interface ID2D1PathGeometry
: ID2D1Geometry
513 [out] ID2D1GeometrySink
**sink
516 [in] ID2D1GeometrySink
*sink
518 HRESULT GetSegmentCount
(
521 HRESULT GetFigureCount
(
529 uuid(28506e39
-ebf6
-46a1
-bb47
-fd85565ab957
)
531 interface ID2D1DrawingStateBlock
: ID2D1Resource
534 [out] D2D1_DRAWING_STATE_DESCRIPTION
*desc
537 [in] const D2D1_DRAWING_STATE_DESCRIPTION
*desc
539 void SetTextRenderingParams
(
540 [in] IDWriteRenderingParams
*text_rendering_params
542 void GetTextRenderingParams
(
543 [out] IDWriteRenderingParams
**text_rendering_params
550 uuid(65019f75
-8da2
-497c
-b32c
-dfa34e48ede6
)
552 interface ID2D1Image
: ID2D1Resource
559 uuid(a2296057
-ea42
-4099-983b
-539fb6505426
)
561 interface ID2D1Bitmap
: ID2D1Image
563 D2D1_SIZE_F GetSize
();
564 D2D1_SIZE_U GetPixelSize
();
565 D2D1_PIXEL_FORMAT GetPixelFormat
();
570 HRESULT CopyFromBitmap
(
571 [in] const D2D1_POINT_2U
*dst_point
,
572 [in] ID2D1Bitmap
*bitmap
,
573 [in] const D2D1_RECT_U
*src_rect
575 HRESULT CopyFromRenderTarget
(
576 [in] const D2D1_POINT_2U
*dst_point
,
577 [in] ID2D1RenderTarget
*render_target
,
578 [in] const D2D1_RECT_U
*src_rect
580 HRESULT CopyFromMemory
(
581 [in] const D2D1_RECT_U
*dst_rect
,
582 [in] const void *src_data
,
590 uuid(2cd906a8
-12e2
-11dc
-9fed
-001143a055f9
)
592 interface ID2D1Brush
: ID2D1Resource
598 [in] const D2D1_MATRIX_3X2_F
*transform
602 [out] D2D1_MATRIX_3X2_F
*transform
609 uuid(2cd906aa
-12e2
-11dc
-9fed
-001143a055f9
)
611 interface ID2D1BitmapBrush
: ID2D1Brush
614 [in] D2D1_EXTEND_MODE mode
617 [in] D2D1_EXTEND_MODE mode
619 void SetInterpolationMode
(
620 [in] D2D1_BITMAP_INTERPOLATION_MODE mode
623 [in] ID2D1Bitmap
*bitmap
625 D2D1_EXTEND_MODE GetExtendModeX
();
626 D2D1_EXTEND_MODE GetExtendModeY
();
627 D2D1_BITMAP_INTERPOLATION_MODE GetInterpolationMode
();
629 [out] ID2D1Bitmap
**bitmap
636 uuid(2cd906a9
-12e2
-11dc
-9fed
-001143a055f9
)
638 interface ID2D1SolidColorBrush
: ID2D1Brush
641 [in] const D2D1_COLOR_F
*color
643 D2D1_COLOR_F GetColor
();
649 uuid(2cd906a7
-12e2
-11dc
-9fed
-001143a055f9
)
651 interface ID2D1GradientStopCollection
: ID2D1Resource
653 UINT32 GetGradientStopCount
();
654 void GetGradientStops
(
655 [out] D2D1_GRADIENT_STOP
*stops
,
656 [in] UINT32 stop_count
658 D2D1_GAMMA GetColorInterpolationGamma
();
659 D2D1_EXTEND_MODE GetExtendMode
();
665 uuid(2cd906ab
-12e2
-11dc
-9fed
-001143a055f9
)
667 interface ID2D1LinearGradientBrush
: ID2D1Brush
670 [in] D2D1_POINT_2F start_point
673 [in] D2D1_POINT_2F end_point
675 D2D1_POINT_2F GetStartPoint
();
676 D2D1_POINT_2F GetEndPoint
();
677 void GetGradientStopCollection
(
678 [out] ID2D1GradientStopCollection
**gradient
685 uuid(2cd906ac
-12e2
-11dc
-9fed
-001143a055f9
)
687 interface ID2D1RadialGradientBrush
: ID2D1Brush
690 [in] D2D1_POINT_2F center
692 void SetGradientOriginOffset
(
693 [in] D2D1_POINT_2F offset
701 D2D1_POINT_2F GetCenter
();
702 D2D1_POINT_2F GetGradientOriginOffset
();
705 void GetGradientStopCollection
(
706 [out] ID2D1GradientStopCollection
**gradient
710 [local] HRESULT __stdcall D2D1CreateFactory
(D2D1_FACTORY_TYPE factory_type
, REFIID iid
,
711 const D2D1_FACTORY_OPTIONS
*factory_options
, void **factory
);