dwrite: Fix splitting by bidi levels.
[wine.git] / include / d2d1.idl
blob1623e46468a6d7939878d64f4539e85492b8660d
1 /*
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
19 import "unknwn.idl";
20 import "dcommon.h";
21 import "d2dbasetypes.h";
22 import "d3d10_1.idl";
23 import "d2derr.h";
25 cpp_quote("#ifdef WINE_NO_UNICODE_MACROS")
26 cpp_quote("#undef DrawText")
27 cpp_quote("#endif")
29 interface ID2D1Factory;
30 interface ID2D1RenderTarget;
31 interface ID2D1BitmapRenderTarget;
32 interface ID2D1Geometry;
33 interface ID2D1Brush;
34 interface IDWriteRenderingParams;
35 interface IDWriteTextFormat;
36 interface IDWriteTextLayout;
37 interface IWICBitmapSource;
38 interface IWICBitmap;
40 cpp_quote("#ifndef __dwrite_h__")
41 /* already defined in dwrite.h but needed for WIDL */
42 typedef struct DWRITE_GLYPH_RUN DWRITE_GLYPH_RUN;
43 cpp_quote("#endif /* __dwrite_h__ */")
45 typedef D2D_POINT_2F D2D1_POINT_2F;
46 typedef D2D_MATRIX_3X2_F D2D1_MATRIX_3X2_F;
47 typedef D2D_RECT_F D2D1_RECT_F;
48 typedef D2D_SIZE_F D2D1_SIZE_F;
49 typedef UINT64 D2D1_TAG;
50 typedef D2D_SIZE_U D2D1_SIZE_U;
51 typedef D2D_POINT_2U D2D1_POINT_2U;
52 typedef D2D_RECT_U D2D1_RECT_U;
53 typedef D2D_COLOR_F D2D1_COLOR_F;
55 enum
57 D2D1_INTERPOLATION_MODE_DEFINITION_NEAREST_NEIGHBOR = 0,
58 D2D1_INTERPOLATION_MODE_DEFINITION_LINEAR = 1,
59 D2D1_INTERPOLATION_MODE_DEFINITION_CUBIC = 2,
60 D2D1_INTERPOLATION_MODE_DEFINITION_MULTI_SAMPLE_LINEAR = 3,
61 D2D1_INTERPOLATION_MODE_DEFINITION_ANISOTROPIC = 4,
62 D2D1_INTERPOLATION_MODE_DEFINITION_HIGH_QUALITY_CUBIC = 5,
63 D2D1_INTERPOLATION_MODE_DEFINITION_FANT = 6,
64 D2D1_INTERPOLATION_MODE_DEFINITION_MIPMAP_LINEAR = 7,
67 typedef enum D2D1_DEBUG_LEVEL
69 D2D1_DEBUG_LEVEL_NONE = 0,
70 D2D1_DEBUG_LEVEL_ERROR = 1,
71 D2D1_DEBUG_LEVEL_WARNING = 2,
72 D2D1_DEBUG_LEVEL_INFORMATION = 3,
73 D2D1_DEBUG_LEVEL_FORCE_DWORD = 0xffffffff,
74 } D2D1_DEBUG_LEVEL;
76 typedef enum D2D1_FACTORY_TYPE
78 D2D1_FACTORY_TYPE_SINGLE_THREADED = 0,
79 D2D1_FACTORY_TYPE_MULTI_THREADED = 1,
80 D2D1_FACTORY_TYPE_FORCE_DWORD = 0xfffffff,
81 } D2D1_FACTORY_TYPE;
83 typedef enum D2D1_FILL_MODE
85 D2D1_FILL_MODE_ALTERNATE = 0,
86 D2D1_FILL_MODE_WINDING = 1,
87 D2D1_FILL_MODE_FORCE_DWORD = 0xffffffff
88 } D2D1_FILL_MODE;
90 typedef enum D2D1_PATH_SEGMENT
92 D2D1_PATH_SEGMENT_NONE = 0,
93 D2D1_PATH_SEGMENT_FORCE_UNSTROKED = 1,
94 D2D1_PATH_SEGMENT_FORCE_ROUND_LINE_JOIN = 2,
95 D2D1_PATH_SEGMENT_FORCE_DWORD = 0xffffffff
96 } D2D1_PATH_SEGMENT;
98 typedef enum D2D1_FIGURE_BEGIN
100 D2D1_FIGURE_BEGIN_FILLED = 0,
101 D2D1_FIGURE_BEGIN_HOLLOW = 1,
102 D2D1_FIGURE_BEGIN_FORCE_DWORD = 0xffffffff
103 } D2D1_FIGURE_BEGIN;
105 typedef enum D2D1_FIGURE_END
107 D2D1_FIGURE_END_OPEN = 0,
108 D2D1_FIGURE_END_CLOSED = 1,
109 D2D1_FIGURE_END_FORCE_DWORD = 0xffffffff
110 } D2D1_FIGURE_END;
112 typedef enum D2D1_CAP_STYLE
114 D2D1_CAP_STYLE_FLAT = 0,
115 D2D1_CAP_STYLE_SQUARE = 1,
116 D2D1_CAP_STYLE_ROUND = 2,
117 D2D1_CAP_STYLE_TRIANGLE = 3,
118 D2D1_CAP_STYLE_FORCE_DWORD = 0xffffffff,
119 } D2D1_CAP_STYLE;
121 typedef enum D2D1_LINE_JOIN
123 D2D1_LINE_JOIN_MITER = 0,
124 D2D1_LINE_JOIN_BEVEL = 1,
125 D2D1_LINE_JOIN_ROUND = 2,
126 D2D1_LINE_JOIN_MITER_OR_BEVEL = 3,
127 D2D1_LINE_JOIN_FORCE_DWORD = 0xffffffff,
128 } D2D1_LINE_JOIN;
130 typedef enum D2D1_DASH_STYLE
132 D2D1_DASH_STYLE_SOLID = 0,
133 D2D1_DASH_STYLE_DASH = 1,
134 D2D1_DASH_STYLE_DOT = 2,
135 D2D1_DASH_STYLE_DASH_DOT = 3,
136 D2D1_DASH_STYLE_DASH_DOT_DOT = 4,
137 D2D1_DASH_STYLE_CUSTOM = 5,
138 D2D1_DASH_STYLE_FORCE_DWORD = 0xffffffff,
139 } D2D1_DASH_STYLE;
141 typedef enum D2D1_GEOMETRY_RELATION
143 D2D1_GEOMETRY_RELATION_UNKNOWN = 0,
144 D2D1_GEOMETRY_RELATION_DISJOINT = 1,
145 D2D1_GEOMETRY_RELATION_IS_CONTAINED = 2,
146 D2D1_GEOMETRY_RELATION_CONTAINS = 3,
147 D2D1_GEOMETRY_RELATION_OVERLAP = 4,
148 D2D1_GEOMETRY_RELATION_FORCE_DWORD = 0xffffffff,
149 } D2D1_GEOMETRY_RELATION;
151 typedef enum D2D1_GEOMETRY_SIMPLIFICATION_OPTION
153 D2D1_GEOMETRY_SIMPLIFICATION_OPTION_CUBICS_AND_LINES = 0,
154 D2D1_GEOMETRY_SIMPLIFICATION_OPTION_LINES = 1,
155 D2D1_GEOMETRY_SIMPLIFICATION_OPTION_FORCE_DWORD = 0xffffffff,
156 } D2D1_GEOMETRY_SIMPLIFICATION_OPTION;
158 typedef enum D2D1_COMBINE_MODE
160 D2D1_COMBINE_MODE_UNION = 0,
161 D2D1_COMBINE_MODE_INTERSECT = 1,
162 D2D1_COMBINE_MODE_XOR = 2,
163 D2D1_COMBINE_MODE_EXCLUDE = 3,
164 D2D1_COMBINE_MODE_FORCE_DWORD = 0xffffffff,
165 } D2D1_COMBINE_MODE;
167 typedef enum D2D1_SWEEP_DIRECTION
169 D2D1_SWEEP_DIRECTION_COUNTER_CLOCKWISE = 0,
170 D2D1_SWEEP_DIRECTION_CLOCKWISE = 1,
171 D2D1_SWEEP_DIRECTION_FORCE_DWORD = 0xffffffff,
172 } D2D1_SWEEP_DIRECTION;
174 typedef enum D2D1_ARC_SIZE
176 D2D1_ARC_SIZE_SMALL = 0,
177 D2D1_ARC_SIZE_LARGE = 1,
178 D2D1_ARC_SIZE_FORCE_DWORD = 0xffffffff,
179 } D2D1_ARC_SIZE;
181 typedef enum D2D1_ANTIALIAS_MODE
183 D2D1_ANTIALIAS_MODE_PER_PRIMITIVE = 0,
184 D2D1_ANTIALIAS_MODE_ALIASED = 1,
185 D2D1_ANTIALIAS_MODE_FORCE_DWORD = 0xffffffff,
186 } D2D1_ANTIALIAS_MODE;
188 typedef enum D2D1_TEXT_ANTIALIAS_MODE
190 D2D1_TEXT_ANTIALIAS_MODE_DEFAULT = 0,
191 D2D1_TEXT_ANTIALIAS_MODE_CLEARTYPE = 1,
192 D2D1_TEXT_ANTIALIAS_MODE_GRAYSCALE = 2,
193 D2D1_TEXT_ANTIALIAS_MODE_ALIASED = 3,
194 D2D1_TEXT_ANTIALIAS_MODE_FORCE_DWORD = 0xffffffff,
195 } D2D1_TEXT_ANTIALIAS_MODE;
197 typedef enum D2D1_EXTEND_MODE
199 D2D1_EXTEND_MODE_CLAMP = 0,
200 D2D1_EXTEND_MODE_WRAP = 1,
201 D2D1_EXTEND_MODE_MIRROR = 2,
202 D2D1_EXTEND_MODE_FORCE_DWORD = 0xffffffff,
203 } D2D1_EXTEND_MODE;
205 typedef enum D2D1_BITMAP_INTERPOLATION_MODE
207 D2D1_BITMAP_INTERPOLATION_MODE_NEAREST_NEIGHBOR = D2D1_INTERPOLATION_MODE_DEFINITION_NEAREST_NEIGHBOR,
208 D2D1_BITMAP_INTERPOLATION_MODE_LINEAR = D2D1_INTERPOLATION_MODE_DEFINITION_LINEAR,
209 D2D1_BITMAP_INTERPOLATION_MODE_FORCE_DWORD = 0xffffffff,
210 } D2D1_BITMAP_INTERPOLATION_MODE;
212 typedef enum D2D1_GAMMA
214 D2D1_GAMMA_2_2 = 0,
215 D2D1_GAMMA_1_0 = 1,
216 D2D1_GAMMA_FORCE_DWORD = 0xffffffff,
217 } D2D1_GAMMA;
219 typedef enum D2D1_COMPATIBLE_RENDER_TARGET_OPTIONS
221 D2D1_COMPATIBLE_RENDER_TARGET_OPTIONS_NONE = 0x00000000,
222 D2D1_COMPATIBLE_RENDER_TARGET_OPTIONS_GDI_COMPATIBLE = 0x00000001,
223 D2D1_COMPATIBLE_RENDER_TARGET_OPTIONS_FORCE_DWORD = 0xffffffff,
224 } D2D1_COMPATIBLE_RENDER_TARGET_OPTIONS;
226 typedef enum D2D1_OPACITY_MASK_CONTENT
228 D2D1_OPACITY_MASK_CONTENT_GRAPHICS = 0,
229 D2D1_OPACITY_MASK_CONTENT_TEXT_NATURAL = 1,
230 D2D1_OPACITY_MASK_CONTENT_TEXT_GDI_COMPATIBLE = 2,
231 D2D1_OPACITY_MASK_CONTENT_FORCE_DWORD = 0xffffffff,
232 } D2D1_OPACITY_MASK_CONTENT;
234 typedef enum D2D1_DRAW_TEXT_OPTIONS
236 D2D1_DRAW_TEXT_OPTIONS_NO_SNAP = 0x00000001,
237 D2D1_DRAW_TEXT_OPTIONS_CLIP = 0x00000002,
238 D2D1_DRAW_TEXT_OPTIONS_NONE = 0x00000000,
239 D2D1_DRAW_TEXT_OPTIONS_FORCE_DWORD = 0xffffffff,
240 } D2D1_DRAW_TEXT_OPTIONS;
242 typedef enum D2D1_LAYER_OPTIONS
244 D2D1_LAYER_OPTIONS_NONE = 0x00000000,
245 D2D1_LAYER_OPTIONS_INITIALIZE_FOR_CLEARTYPE = 0x00000001,
246 D2D1_LAYER_OPTIONS_FORCE_DWORD = 0xffffffff,
247 } D2D1_LAYER_OPTIONS;
249 typedef enum D2D1_RENDER_TARGET_TYPE
251 D2D1_RENDER_TARGET_TYPE_DEFAULT = 0,
252 D2D1_RENDER_TARGET_TYPE_SOFTWARE = 1,
253 D2D1_RENDER_TARGET_TYPE_HARDWARE = 2,
254 D2D1_RENDER_TARGET_TYPE_FORCE_DWORD = 0xffffffff,
255 } D2D1_RENDER_TARGET_TYPE;
257 typedef enum D2D1_RENDER_TARGET_USAGE
259 D2D1_RENDER_TARGET_USAGE_NONE = 0x00000000,
260 D2D1_RENDER_TARGET_USAGE_FORCE_BITMAP_REMOTING = 0x00000001,
261 D2D1_RENDER_TARGET_USAGE_GDI_COMPATIBLE = 0x00000002,
262 D2D1_RENDER_TARGET_USAGE_FORCE_DWORD = 0xffffffff,
263 } D2D1_RENDER_TARGET_USAGE;
265 typedef enum D2D1_FEATURE_LEVEL
267 D2D1_FEATURE_LEVEL_DEFAULT = 0,
268 D2D1_FEATURE_LEVEL_9 = D3D_FEATURE_LEVEL_9_1,
269 D2D1_FEATURE_LEVEL_10 = D3D_FEATURE_LEVEL_10_0,
270 D2D1_FEATURE_LEVEL_FORCE_DWORD = 0xffffffff,
271 } D2D1_FEATURE_LEVEL;
273 typedef enum D2D1_WINDOW_STATE
275 D2D1_WINDOW_STATE_NONE = 0x0000000,
276 D2D1_WINDOW_STATE_OCCLUDED = 0x0000001,
277 D2D1_WINDOW_STATE_FORCE_DWORD = 0xffffffff,
278 } D2D1_WINDOW_STATE;
280 typedef enum D2D1_DC_INITIALIZE_MODE
282 D2D1_DC_INITIALIZE_MODE_COPY = 0,
283 D2D1_DC_INITIALIZE_MODE_CLEAR = 1,
284 D2D1_DC_INITIALIZE_MODE_FORCE_DWORD = 0xffffffff,
285 } D2D1_DC_INITIALIZE_MODE;
287 typedef enum D2D1_PRESENT_OPTIONS
289 D2D1_PRESENT_OPTIONS_NONE = 0x00000000,
290 D2D1_PRESENT_OPTIONS_RETAIN_CONTENTS = 0x00000001,
291 D2D1_PRESENT_OPTIONS_IMMEDIATELY = 0x00000002,
292 D2D1_PRESENT_OPTIONS_FORCE_DWORD = 0xffffffff,
293 } D2D1_PRESENT_OPTIONS;
295 typedef struct D2D1_BEZIER_SEGMENT
297 D2D1_POINT_2F point1;
298 D2D1_POINT_2F point2;
299 D2D1_POINT_2F point3;
300 } D2D1_BEZIER_SEGMENT;
302 typedef struct D2D1_FACTORY_OPTIONS
304 D2D1_DEBUG_LEVEL debugLevel;
305 } D2D1_FACTORY_OPTIONS;
307 typedef struct D2D1_TRIANGLE
309 D2D1_POINT_2F point1;
310 D2D1_POINT_2F point2;
311 D2D1_POINT_2F point3;
312 } D2D1_TRIANGLE;
314 typedef struct D2D1_ROUNDED_RECT
316 D2D1_RECT_F rect;
317 float radiusX;
318 float radiusY;
319 } D2D1_ROUNDED_RECT;
321 typedef struct D2D1_ELLIPSE
323 D2D1_POINT_2F point;
324 float radiusX;
325 float radiusY;
326 } D2D1_ELLIPSE;
328 typedef struct D2D1_QUADRATIC_BEZIER_SEGMENT
330 D2D1_POINT_2F point1;
331 D2D1_POINT_2F point2;
332 } D2D1_QUADRATIC_BEZIER_SEGMENT;
334 typedef struct D2D1_ARC_SEGMENT
336 D2D1_POINT_2F point;
337 D2D1_SIZE_F size;
338 float rotationAngle;
339 D2D1_SWEEP_DIRECTION sweepDirection;
340 D2D1_ARC_SIZE arcSize;
341 } D2D1_ARC_SEGMENT;
343 typedef struct D2D1_DRAWING_STATE_DESCRIPTION
345 D2D1_ANTIALIAS_MODE antialiasMode;
346 D2D1_TEXT_ANTIALIAS_MODE textAntialiasMode;
347 D2D1_TAG tag1;
348 D2D1_TAG tag2;
349 D2D1_MATRIX_3X2_F transform;
350 } D2D1_DRAWING_STATE_DESCRIPTION;
352 typedef struct D2D1_GRADIENT_STOP
354 float position;
355 D2D1_COLOR_F color;
356 } D2D1_GRADIENT_STOP;
358 typedef struct D2D1_BITMAP_PROPERTIES
360 D2D1_PIXEL_FORMAT pixelFormat;
361 float dpiX;
362 float dpiY;
363 } D2D1_BITMAP_PROPERTIES;
365 typedef struct D2D1_BITMAP_BRUSH_PROPERTIES
367 D2D1_EXTEND_MODE extendModeX;
368 D2D1_EXTEND_MODE extendModeY;
369 D2D1_BITMAP_INTERPOLATION_MODE interpolationMode;
370 } D2D1_BITMAP_BRUSH_PROPERTIES;
372 typedef struct D2D1_BRUSH_PROPERTIES
374 float opacity;
375 D2D1_MATRIX_3X2_F transform;
376 } D2D1_BRUSH_PROPERTIES;
378 typedef struct D2D1_LINEAR_GRADIENT_BRUSH_PROPERTIES
380 D2D1_POINT_2F startPoint;
381 D2D1_POINT_2F endPoint;
382 } D2D1_LINEAR_GRADIENT_BRUSH_PROPERTIES;
384 typedef struct D2D1_RADIAL_GRADIENT_BRUSH_PROPERTIES
386 D2D1_POINT_2F center;
387 D2D1_POINT_2F gradientOriginOffset;
388 float radiusX;
389 float radiusY;
390 } D2D1_RADIAL_GRADIENT_BRUSH_PROPERTIES;
392 typedef struct D2D1_LAYER_PARAMETERS
394 D2D1_RECT_F contentBounds;
395 ID2D1Geometry *geometricMask;
396 D2D1_ANTIALIAS_MODE maskAntialiasMode;
397 D2D1_MATRIX_3X2_F maskTransform;
398 float opacity;
399 ID2D1Brush *opacityBrush;
400 D2D1_LAYER_OPTIONS layerOptions;
401 } D2D1_LAYER_PARAMETERS;
403 typedef struct D2D1_RENDER_TARGET_PROPERTIES
405 D2D1_RENDER_TARGET_TYPE type;
406 D2D1_PIXEL_FORMAT pixelFormat;
407 float dpiX;
408 float dpiY;
409 D2D1_RENDER_TARGET_USAGE usage;
410 D2D1_FEATURE_LEVEL minLevel;
411 } D2D1_RENDER_TARGET_PROPERTIES;
413 typedef struct D2D1_STROKE_STYLE_PROPERTIES
415 D2D1_CAP_STYLE startCap;
416 D2D1_CAP_STYLE endCap;
417 D2D1_CAP_STYLE dashCap;
418 D2D1_LINE_JOIN lineJoin;
419 float miterLimit;
420 D2D1_DASH_STYLE dashStyle;
421 float dashOffset;
422 } D2D1_STROKE_STYLE_PROPERTIES;
424 typedef struct D2D1_HWND_RENDER_TARGET_PROPERTIES
426 HWND hwnd;
427 D2D1_SIZE_U pixelSize;
428 D2D1_PRESENT_OPTIONS presentOptions;
429 } D2D1_HWND_RENDER_TARGET_PROPERTIES;
432 local,
433 object,
434 uuid(2cd90691-12e2-11dc-9fed-001143a055f9)
436 interface ID2D1Resource : IUnknown
438 void GetFactory(
439 [out] ID2D1Factory **factory
444 local,
445 object,
446 uuid(2cd9069d-12e2-11dc-9fed-001143a055f9)
448 interface ID2D1StrokeStyle : ID2D1Resource
450 D2D1_CAP_STYLE GetStartCap();
451 D2D1_CAP_STYLE GetEndCap();
452 D2D1_CAP_STYLE GetDashCap();
453 float GetMiterLimit();
454 D2D1_LINE_JOIN GetLineJoin();
455 float GetDashOffset();
456 D2D1_DASH_STYLE GetDashStyle();
457 UINT32 GetDashesCount();
458 void GetDashes(
459 [out, size_is(count)] float *dashes,
460 [in] UINT32 count
465 local,
466 object,
467 uuid(2cd9069e-12e2-11dc-9fed-001143a055f9)
469 interface ID2D1SimplifiedGeometrySink : IUnknown
471 void SetFillMode(D2D1_FILL_MODE mode);
472 void SetSegmentFlags(D2D1_PATH_SEGMENT vertexFlags);
473 void BeginFigure(D2D1_POINT_2F startPoint, D2D1_FIGURE_BEGIN figureBegin);
474 void AddLines(const D2D1_POINT_2F *points, UINT32 count);
475 void AddBeziers(const D2D1_BEZIER_SEGMENT *beziers, UINT32 count);
476 void EndFigure(D2D1_FIGURE_END figureEnd);
477 HRESULT Close();
481 local,
482 object,
483 uuid(2cd906c1-12e2-11dc-9fed-001143a055f9)
485 interface ID2D1TessellationSink : IUnknown
487 void AddTriangles(
488 [in, size_is(count)] const D2D1_TRIANGLE *triangles,
489 [in] UINT32 count
491 HRESULT Close();
495 local,
496 object,
497 uuid(2cd906a1-12e2-11dc-9fed-001143a055f9)
499 interface ID2D1Geometry : ID2D1Resource
501 HRESULT GetBounds(
502 [in] const D2D1_MATRIX_3X2_F *transform,
503 [out] D2D1_RECT_F *bounds
505 HRESULT GetWidenedBounds(
506 [in] float stroke_width,
507 [in] ID2D1StrokeStyle *stroke_style,
508 [in] const D2D1_MATRIX_3X2_F *transform,
509 [in] float tolerance,
510 [out] D2D1_RECT_F *bounds
512 HRESULT StrokeContainsPoint(
513 [in] D2D1_POINT_2F point,
514 [in] float stroke_width,
515 [in] ID2D1StrokeStyle *stroke_style,
516 [in] const D2D1_MATRIX_3X2_F *transform,
517 [in] float tolerance,
518 [out] BOOL *contains
520 HRESULT FillContainsPoint(
521 [in] D2D1_POINT_2F point,
522 [in] const D2D1_MATRIX_3X2_F *transform,
523 [in] float tolerance,
524 [out] BOOL *contains
526 HRESULT CompareWithGeometry(
527 [in] ID2D1Geometry *geometry,
528 [in] const D2D1_MATRIX_3X2_F *transform,
529 [in] float tolerance,
530 [out] D2D1_GEOMETRY_RELATION *relation
532 HRESULT Simplify(
533 [in] D2D1_GEOMETRY_SIMPLIFICATION_OPTION option,
534 [in] const D2D1_MATRIX_3X2_F *transform,
535 [in] float tolerance,
536 [in] ID2D1SimplifiedGeometrySink *sink
538 HRESULT Tessellate(
539 [in] const D2D1_MATRIX_3X2_F *transform,
540 [in] float tolerance,
541 [in] ID2D1TessellationSink *sink
543 HRESULT CombineWithGeometry(
544 [in] ID2D1Geometry *geometry,
545 [in] D2D1_COMBINE_MODE combine_mode,
546 [in] const D2D1_MATRIX_3X2_F *transform,
547 [in] float tolerance,
548 [in] ID2D1SimplifiedGeometrySink *sink
550 HRESULT Outline(
551 [in] const D2D1_MATRIX_3X2_F *transform,
552 [in] float tolerance,
553 [in] ID2D1SimplifiedGeometrySink *sink
555 HRESULT ComputeArea(
556 [in] const D2D1_MATRIX_3X2_F *transform,
557 [in] float tolerance,
558 [out] float *area
560 HRESULT ComputeLength(
561 [in] const D2D1_MATRIX_3X2_F *transform,
562 [in] float tolerance,
563 [out] float *length
565 HRESULT ComputePointAtLength(
566 [in] float length,
567 [in] const D2D1_MATRIX_3X2_F *transform,
568 [in] float tolerance,
569 [out] D2D1_POINT_2F *point,
570 [out] D2D1_POINT_2F *tangent
572 HRESULT Widen(
573 [in] float stroke_width,
574 [in] ID2D1StrokeStyle *stroke_style,
575 [in] const D2D1_MATRIX_3X2_F *transform,
576 [in] float tolerance,
577 [in] ID2D1SimplifiedGeometrySink *sink
582 local,
583 object,
584 uuid(2cd906a2-12e2-11dc-9fed-001143a055f9)
586 interface ID2D1RectangleGeometry : ID2D1Geometry
588 void GetRect(
589 [out] D2D1_RECT_F *rect
594 local,
595 object,
596 uuid(2cd906a3-12e2-11dc-9fed-001143a055f9)
598 interface ID2D1RoundedRectangleGeometry : ID2D1Geometry
600 void GetRoundedRect(
601 [out] D2D1_ROUNDED_RECT *rect
606 local,
607 object,
608 uuid(2cd906a4-12e2-11dc-9fed-001143a055f9)
610 interface ID2D1EllipseGeometry : ID2D1Geometry
612 void GetEllipse(
613 [out] D2D1_ELLIPSE *ellipse
618 local,
619 object,
620 uuid(2cd906a6-12e2-11dc-9fed-001143a055f9)
622 interface ID2D1GeometryGroup : ID2D1Geometry
624 D2D1_FILL_MODE GetFillMode();
625 UINT32 GetSourceGeometryCount();
626 void GetSourceGeometries(
627 [out, size_is(geometry_count)] ID2D1Geometry **geometry,
628 [in] UINT32 geometry_count
633 local,
634 object,
635 uuid(2cd906bb-12e2-11dc-9fed-001143a055f9)
637 interface ID2D1TransformedGeometry : ID2D1Geometry
639 void GetSourceGeometry(
640 [out] ID2D1Geometry **geometry
642 void GetTransform(
643 [out] D2D1_MATRIX_3X2_F *transform
648 local,
649 object,
650 uuid(2cd9069f-12e2-11dc-9fed-001143a055f9)
652 interface ID2D1GeometrySink : ID2D1SimplifiedGeometrySink
654 void AddLine(
655 [in] D2D1_POINT_2F point
657 void AddBezier(
658 [in] const D2D1_BEZIER_SEGMENT *bezier
660 void AddQuadraticBezier(
661 [in] const D2D1_QUADRATIC_BEZIER_SEGMENT *bezier
663 void AddQuadraticBeziers(
664 [in, size_is(bezier_count)] const D2D1_QUADRATIC_BEZIER_SEGMENT *beziers,
665 [in] UINT32 bezier_count
667 void AddArc(
668 [in] const D2D1_ARC_SEGMENT *arc
673 local,
674 object,
675 uuid(2cd906a5-12e2-11dc-9fed-001143a055f9)
677 interface ID2D1PathGeometry : ID2D1Geometry
679 HRESULT Open(
680 [out] ID2D1GeometrySink **sink
682 HRESULT Stream(
683 [in] ID2D1GeometrySink *sink
685 HRESULT GetSegmentCount(
686 [out] UINT32 *count
688 HRESULT GetFigureCount(
689 [out] UINT32 *count
694 local,
695 object,
696 uuid(28506e39-ebf6-46a1-bb47-fd85565ab957)
698 interface ID2D1DrawingStateBlock : ID2D1Resource
700 void GetDescription(
701 [out] D2D1_DRAWING_STATE_DESCRIPTION *desc
703 void SetDescription(
704 [in] const D2D1_DRAWING_STATE_DESCRIPTION *desc
706 void SetTextRenderingParams(
707 [in] IDWriteRenderingParams *text_rendering_params
709 void GetTextRenderingParams(
710 [out] IDWriteRenderingParams **text_rendering_params
715 local,
716 object,
717 uuid(65019f75-8da2-497c-b32c-dfa34e48ede6)
719 interface ID2D1Image : ID2D1Resource
724 local,
725 object,
726 uuid(a2296057-ea42-4099-983b-539fb6505426)
728 interface ID2D1Bitmap : ID2D1Image
730 D2D1_SIZE_F GetSize();
731 D2D1_SIZE_U GetPixelSize();
732 D2D1_PIXEL_FORMAT GetPixelFormat();
733 void GetDpi(
734 [out] float *dpi_x,
735 [out] float *dpi_y
737 HRESULT CopyFromBitmap(
738 [in] const D2D1_POINT_2U *dst_point,
739 [in] ID2D1Bitmap *bitmap,
740 [in] const D2D1_RECT_U *src_rect
742 HRESULT CopyFromRenderTarget(
743 [in] const D2D1_POINT_2U *dst_point,
744 [in] ID2D1RenderTarget *render_target,
745 [in] const D2D1_RECT_U *src_rect
747 HRESULT CopyFromMemory(
748 [in] const D2D1_RECT_U *dst_rect,
749 [in] const void *src_data,
750 [in] UINT32 pitch
755 local,
756 object,
757 uuid(2cd906a8-12e2-11dc-9fed-001143a055f9)
759 interface ID2D1Brush : ID2D1Resource
761 void SetOpacity(
762 [in] float opacity
764 void SetTransform(
765 [in] const D2D1_MATRIX_3X2_F *transform
767 float GetOpacity();
768 void GetTransform(
769 [out] D2D1_MATRIX_3X2_F *transform
774 local,
775 object,
776 uuid(2cd906aa-12e2-11dc-9fed-001143a055f9)
778 interface ID2D1BitmapBrush : ID2D1Brush
780 void SetExtendModeX(
781 [in] D2D1_EXTEND_MODE mode
783 void SetExtendModeY(
784 [in] D2D1_EXTEND_MODE mode
786 void SetInterpolationMode(
787 [in] D2D1_BITMAP_INTERPOLATION_MODE mode
789 void SetBitmap(
790 [in] ID2D1Bitmap *bitmap
792 D2D1_EXTEND_MODE GetExtendModeX();
793 D2D1_EXTEND_MODE GetExtendModeY();
794 D2D1_BITMAP_INTERPOLATION_MODE GetInterpolationMode();
795 void GetBitmap(
796 [out] ID2D1Bitmap **bitmap
801 local,
802 object,
803 uuid(2cd906a9-12e2-11dc-9fed-001143a055f9)
805 interface ID2D1SolidColorBrush : ID2D1Brush
807 void SetColor(
808 [in] const D2D1_COLOR_F *color
810 D2D1_COLOR_F GetColor();
814 local,
815 object,
816 uuid(2cd906a7-12e2-11dc-9fed-001143a055f9)
818 interface ID2D1GradientStopCollection : ID2D1Resource
820 UINT32 GetGradientStopCount();
821 void GetGradientStops(
822 [out] D2D1_GRADIENT_STOP *stops,
823 [in] UINT32 stop_count
825 D2D1_GAMMA GetColorInterpolationGamma();
826 D2D1_EXTEND_MODE GetExtendMode();
830 local,
831 object,
832 uuid(2cd906ab-12e2-11dc-9fed-001143a055f9)
834 interface ID2D1LinearGradientBrush : ID2D1Brush
836 void SetStartPoint(
837 [in] D2D1_POINT_2F start_point
839 void SetEndPoint(
840 [in] D2D1_POINT_2F end_point
842 D2D1_POINT_2F GetStartPoint();
843 D2D1_POINT_2F GetEndPoint();
844 void GetGradientStopCollection(
845 [out] ID2D1GradientStopCollection **gradient
850 local,
851 object,
852 uuid(2cd906ac-12e2-11dc-9fed-001143a055f9)
854 interface ID2D1RadialGradientBrush : ID2D1Brush
856 void SetCenter(
857 [in] D2D1_POINT_2F center
859 void SetGradientOriginOffset(
860 [in] D2D1_POINT_2F offset
862 void SetRadiusX(
863 [in] float radius
865 void SetRadiusY(
866 [in] float radius
868 D2D1_POINT_2F GetCenter();
869 D2D1_POINT_2F GetGradientOriginOffset();
870 float GetRadiusX();
871 float GetRadiusY();
872 void GetGradientStopCollection(
873 [out] ID2D1GradientStopCollection **gradient
878 local,
879 object,
880 uuid(2cd9069b-12e2-11dc-9fed-001143a055f9)
882 interface ID2D1Layer : ID2D1Resource
884 D2D1_SIZE_F GetSize();
888 local,
889 object,
890 uuid(2cd906c2-12e2-11dc-9fed-001143a055f9)
892 interface ID2D1Mesh : ID2D1Resource
894 HRESULT Open(
895 [out] ID2D1TessellationSink **sink
900 local,
901 object,
902 uuid(2cd90694-12e2-11dc-9fed-001143a055f9)
904 interface ID2D1RenderTarget : ID2D1Resource
906 HRESULT CreateBitmap(
907 [in] D2D1_SIZE_U size,
908 [in] const void *src_data,
909 [in] UINT32 pitch,
910 [in] const D2D1_BITMAP_PROPERTIES *desc,
911 [out] ID2D1Bitmap **bitmap
913 HRESULT CreateBitmapFromWicBitmap(
914 [in] IWICBitmapSource *bitmap_source,
915 [in] const D2D1_BITMAP_PROPERTIES *desc,
916 [out] ID2D1Bitmap **bitmap
918 HRESULT CreateSharedBitmap(
919 [in] REFIID iid,
920 [in, out] void *data,
921 [in] const D2D1_BITMAP_PROPERTIES *desc,
922 [out] ID2D1Bitmap **bitmap
924 HRESULT CreateBitmapBrush(
925 [in] ID2D1Bitmap *bitmap,
926 [in] const D2D1_BITMAP_BRUSH_PROPERTIES *bitmap_brush_desc,
927 [in] const D2D1_BRUSH_PROPERTIES *brush_desc,
928 [out] ID2D1BitmapBrush **brush
930 HRESULT CreateSolidColorBrush(
931 [in] const D2D1_COLOR_F *color,
932 [in] const D2D1_BRUSH_PROPERTIES *desc,
933 [out] ID2D1SolidColorBrush **brush
935 HRESULT CreateGradientStopCollection(
936 [in, size_is(stop_count)] const D2D1_GRADIENT_STOP *stops,
937 [in] UINT32 stop_count,
938 [in] D2D1_GAMMA gamma,
939 [in] D2D1_EXTEND_MODE extend_mode,
940 [out] ID2D1GradientStopCollection **gradient
942 HRESULT CreateLinearGradientBrush(
943 [in] const D2D1_LINEAR_GRADIENT_BRUSH_PROPERTIES *gradient_brush_desc,
944 [in] const D2D1_BRUSH_PROPERTIES *brush_desc,
945 [in] ID2D1GradientStopCollection *gradient,
946 [out] ID2D1LinearGradientBrush **brush
948 HRESULT CreateRadialGradientBrush(
949 [in] const D2D1_RADIAL_GRADIENT_BRUSH_PROPERTIES *gradient_brush_desc,
950 [in] const D2D1_BRUSH_PROPERTIES *brush_desc,
951 [in] ID2D1GradientStopCollection *gradient,
952 [out] ID2D1RadialGradientBrush **brush
954 HRESULT CreateCompatibleRenderTarget(
955 [in] const D2D1_SIZE_F *size,
956 [in] const D2D1_SIZE_U *pixel_size,
957 [in] const D2D1_PIXEL_FORMAT *format,
958 [in] D2D1_COMPATIBLE_RENDER_TARGET_OPTIONS options,
959 [out] ID2D1BitmapRenderTarget **render_target
961 HRESULT CreateLayer(
962 [in] const D2D1_SIZE_F *size,
963 [out] ID2D1Layer **layer
965 HRESULT CreateMesh(
966 [out] ID2D1Mesh **mesh
968 void DrawLine(
969 [in] D2D1_POINT_2F p0,
970 [in] D2D1_POINT_2F p1,
971 [in] ID2D1Brush *brush,
972 [in] float stroke_width,
973 [in] ID2D1StrokeStyle *stroke_style
975 void DrawRectangle(
976 [in] const D2D1_RECT_F *rect,
977 [in] ID2D1Brush *brush,
978 [in] float stroke_width,
979 [in] ID2D1StrokeStyle *stroke_style
981 void FillRectangle(
982 [in] const D2D1_RECT_F *rect,
983 [in] ID2D1Brush *brush
985 void DrawRoundedRectangle(
986 [in] const D2D1_ROUNDED_RECT *rect,
987 [in] ID2D1Brush *brush,
988 [in] float stroke_width,
989 [in] ID2D1StrokeStyle *stroke_style
991 void FillRoundedRectangle(
992 [in] const D2D1_ROUNDED_RECT *rect,
993 [in] ID2D1Brush *brush
995 void DrawEllipse(
996 [in] const D2D1_ELLIPSE *ellipse,
997 [in] ID2D1Brush *brush,
998 [in] float stroke_width,
999 [in] ID2D1StrokeStyle *stroke_style
1001 void FillEllipse(
1002 [in] const D2D1_ELLIPSE *ellipse,
1003 [in] ID2D1Brush *brush
1005 void DrawGeometry(
1006 [in] ID2D1Geometry *geometry,
1007 [in] ID2D1Brush *brush,
1008 [in] float stroke_width,
1009 [in] ID2D1StrokeStyle *stroke_style
1011 void FillGeometry(
1012 [in] ID2D1Geometry *geometry,
1013 [in] ID2D1Brush *brush,
1014 [in] ID2D1Brush *opacity_brush
1016 void FillMesh(
1017 [in] ID2D1Mesh *mesh,
1018 [in] ID2D1Brush *brush
1020 void FillOpacityMask(
1021 [in] ID2D1Bitmap *mask,
1022 [in] ID2D1Brush *brush,
1023 [in] D2D1_OPACITY_MASK_CONTENT content,
1024 [in] const D2D1_RECT_F *dst_rect,
1025 [in] const D2D1_RECT_F *src_rect
1027 void DrawBitmap(
1028 [in] ID2D1Bitmap *bitmap,
1029 [in] const D2D1_RECT_F *dst_rect,
1030 [in] float opacity,
1031 [in] D2D1_BITMAP_INTERPOLATION_MODE interpolation_mode,
1032 [in] const D2D1_RECT_F *src_rect
1034 void DrawText(
1035 [in, size_is(string_len)] const WCHAR *string,
1036 [in] UINT32 string_len,
1037 [in] IDWriteTextFormat *text_format,
1038 [in] const D2D1_RECT_F *layout_rect,
1039 [in] ID2D1Brush *brush,
1040 [in] D2D1_DRAW_TEXT_OPTIONS options,
1041 [in] DWRITE_MEASURING_MODE measuring_mode
1043 void DrawTextLayout(
1044 [in] D2D1_POINT_2F origin,
1045 [in] IDWriteTextLayout *layout,
1046 [in] ID2D1Brush *brush,
1047 [in] D2D1_DRAW_TEXT_OPTIONS options
1049 void DrawGlyphRun(
1050 [in] D2D1_POINT_2F baseline_origin,
1051 [in] const DWRITE_GLYPH_RUN *glyph_run,
1052 [in] ID2D1Brush *brush,
1053 [in] DWRITE_MEASURING_MODE measuring_mode
1055 void SetTransform(
1056 [in] const D2D1_MATRIX_3X2_F *transform
1058 void GetTransform(
1059 [out] D2D1_MATRIX_3X2_F *transform
1061 void SetAntialiasMode(
1062 [in] D2D1_ANTIALIAS_MODE antialias_mode
1064 D2D1_ANTIALIAS_MODE GetAntialiasMode();
1065 void SetTextAntialiasMode(
1066 [in] D2D1_TEXT_ANTIALIAS_MODE antialias_mode
1068 D2D1_TEXT_ANTIALIAS_MODE GetTextAntialiasMode();
1069 void SetTextRenderingParams(
1070 [in] IDWriteRenderingParams *text_rendering_params
1072 void GetTextRenderingParams(
1073 [out] IDWriteRenderingParams **text_rendering_params
1075 void SetTags(
1076 [in] D2D1_TAG tag1,
1077 [in] D2D1_TAG tag2
1079 void GetTags(
1080 [out] D2D1_TAG *tag1,
1081 [out] D2D1_TAG *tag2
1083 void PushLayer(
1084 [in] const D2D1_LAYER_PARAMETERS *layer_parameters,
1085 [in] ID2D1Layer *layer
1087 void PopLayer();
1088 HRESULT Flush(
1089 [out] D2D1_TAG *tag1,
1090 [out] D2D1_TAG *tag2
1092 void SaveDrawingState(
1093 [in, out] ID2D1DrawingStateBlock *state_block
1095 void RestoreDrawingState(
1096 [in] ID2D1DrawingStateBlock *state_block
1098 void PushAxisAlignedClip(
1099 [in] const D2D1_RECT_F *clip_rect,
1100 [in] D2D1_ANTIALIAS_MODE antialias_mode
1102 void PopAxisAlignedClip();
1103 void Clear(
1104 [in] const D2D1_COLOR_F *color
1106 void BeginDraw();
1107 HRESULT EndDraw(
1108 [out] D2D1_TAG *tag1,
1109 [out] D2D1_TAG *tag2
1111 D2D1_PIXEL_FORMAT GetPixelFormat();
1112 void SetDpi(
1113 [in] float dpi_x,
1114 [in] float dpi_y
1116 void GetDpi(
1117 [out] float *dpi_x,
1118 [out] float *dpi_y
1120 D2D1_SIZE_F GetSize();
1121 D2D1_SIZE_U GetPixelSize();
1122 UINT32 GetMaximumBitmapSize();
1123 BOOL IsSupported(
1124 [in] const D2D1_RENDER_TARGET_PROPERTIES *desc
1129 local,
1130 object,
1131 uuid(2cd90695-12e2-11dc-9fed-001143a055f9)
1133 interface ID2D1BitmapRenderTarget : ID2D1RenderTarget
1135 HRESULT GetBitmap(
1136 [out] ID2D1Bitmap **bitmap
1141 local,
1142 object,
1143 uuid(2cd90698-12e2-11dc-9fed-001143a055f9)
1145 interface ID2D1HwndRenderTarget : ID2D1RenderTarget
1147 D2D1_WINDOW_STATE CheckWindowState();
1148 HRESULT Resize(
1149 [in] const D2D1_SIZE_U size
1151 HWND GetHwnd();
1155 local,
1156 object,
1157 uuid(1c51bc64-de61-46fd-9899-63a5d8f03950)
1159 interface ID2D1DCRenderTarget : ID2D1RenderTarget
1161 HRESULT BindDC(
1162 [in] const HDC dc,
1163 [in] const RECT rect
1168 local,
1169 object,
1170 uuid(e0db51c3-6f77-4bae-b3d5-e47509b35838)
1172 interface ID2D1GdiInteropRenderTarget : IUnknown
1174 HRESULT GetDC(
1175 [in] D2D1_DC_INITIALIZE_MODE mode,
1176 [out] HDC *dc
1178 HRESULT ReleaseDC(
1179 [in] const RECT *update
1184 local,
1185 object,
1186 uuid(06152247-6f50-465a-9245-118bfd3b6007)
1188 interface ID2D1Factory : IUnknown
1190 HRESULT ReloadSystemMetrics();
1191 void GetDesktopDpi(
1192 [out] float *dpi_x,
1193 [out] float *dpi_y
1195 HRESULT CreateRectangleGeometry(
1196 [in] const D2D1_RECT_F *rect,
1197 [out] ID2D1RectangleGeometry **geometry
1199 HRESULT CreateRoundedRectangleGeometry(
1200 [in] const D2D1_ROUNDED_RECT *rect,
1201 [out] ID2D1RoundedRectangleGeometry **geometry
1203 HRESULT CreateEllipseGeometry(
1204 [in] const D2D1_ELLIPSE *ellipse,
1205 [out] ID2D1EllipseGeometry **geometry
1207 HRESULT CreateGeometryGroup(
1208 [in] D2D1_FILL_MODE fill_mode,
1209 [in, size_is(geometry_count)] ID2D1Geometry *geometry,
1210 [in] UINT32 geometry_count,
1211 [out] ID2D1GeometryGroup **group
1213 HRESULT CreateTransformedGeometry(
1214 [in] ID2D1Geometry *src_geometry,
1215 [in] const D2D1_MATRIX_3X2_F *transform,
1216 [out] ID2D1TransformedGeometry **transformed_geometry
1218 HRESULT CreatePathGeometry(
1219 [out] ID2D1PathGeometry *geometry
1221 HRESULT CreateStrokeStyle(
1222 [in] const D2D1_STROKE_STYLE_PROPERTIES *desc,
1223 [in, size_is(dash_count)] const float *dashes,
1224 [in] UINT32 dash_count,
1225 [out] ID2D1StrokeStyle **stroke_style
1227 HRESULT CreateDrawingStateBlock(
1228 [in] const D2D1_DRAWING_STATE_DESCRIPTION *desc,
1229 [in] IDWriteRenderingParams *text_rendering_params,
1230 [out] ID2D1DrawingStateBlock **state_block
1232 HRESULT CreateWicBitmapRenderTarget(
1233 [in] IWICBitmap *target,
1234 [in] const D2D1_RENDER_TARGET_PROPERTIES *desc,
1235 [out] ID2D1RenderTarget **render_target
1237 HRESULT CreateHwndRenderTarget(
1238 [in] const D2D1_RENDER_TARGET_PROPERTIES *desc,
1239 [in] const D2D1_HWND_RENDER_TARGET_PROPERTIES *hwnd_rt_desc,
1240 [out] ID2D1HwndRenderTarget **render_target
1242 HRESULT CreateDxgiSurfaceRenderTarget(
1243 [in] IDXGISurface *surface,
1244 [in] const D2D1_RENDER_TARGET_PROPERTIES *desc,
1245 [out] ID2D1RenderTarget **render_target
1247 HRESULT CreateDCRenderTarget(
1248 [in] const D2D1_RENDER_TARGET_PROPERTIES *desc,
1249 [out] ID2D1DCRenderTarget **render_target
1253 [local] HRESULT __stdcall D2D1CreateFactory(D2D1_FACTORY_TYPE factory_type, REFIID iid,
1254 const D2D1_FACTORY_OPTIONS *factory_options, void **factory);
1255 [local] void __stdcall D2D1MakeRotateMatrix(float angle, D2D1_POINT_2F center, D2D1_MATRIX_3X2_F *matrix);