wmiutils: Always null-terminate the server string in build_server (valgrind).
[wine/wine-gecko.git] / include / d2d1.idl
blobbfed202ed38ee6eb501914385bbd070672c43eb0
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 "d2dbasetypes.h";
22 typedef D2D_POINT_2F D2D1_POINT_2F;
23 typedef D2D_MATRIX_3X2_F D2D1_MATRIX_3X2_F;
24 typedef D2D_RECT_F D2D1_RECT_F;
25 typedef D2D_SIZE_F D2D1_SIZE_F;
27 typedef enum D2D1_DEBUG_LEVEL
29 D2D1_DEBUG_LEVEL_NONE = 0,
30 D2D1_DEBUG_LEVEL_ERROR = 1,
31 D2D1_DEBUG_LEVEL_WARNING = 2,
32 D2D1_DEBUG_LEVEL_INFORMATION = 3,
33 D2D1_DEBUG_LEVEL_FORCE_DWORD = 0xffffffff,
34 } D2D1_DEBUG_LEVEL;
36 typedef enum D2D1_FACTORY_TYPE
38 D2D1_FACTORY_TYPE_SINGLE_THREADED = 0,
39 D2D1_FACTORY_TYPE_MULTI_THREADED = 1,
40 D2D1_FACTORY_TYPE_FORCE_DWORD = 0xfffffff,
41 } D2D1_FACTORY_TYPE;
43 typedef enum D2D1_FILL_MODE
45 D2D1_FILL_MODE_ALTERNATE = 0,
46 D2D1_FILL_MODE_WINDING = 1,
47 D2D1_FILL_MODE_FORCE_DWORD = 0xffffffff
48 } D2D1_FILL_MODE;
50 typedef enum D2D1_PATH_SEGMENT
52 D2D1_PATH_SEGMENT_NONE = 0,
53 D2D1_PATH_SEGMENT_FORCE_UNSTROKED = 1,
54 D2D1_PATH_SEGMENT_FORCE_ROUND_LINE_JOIN = 2,
55 D2D1_PATH_SEGMENT_FORCE_DWORD = 0xffffffff
56 } D2D1_PATH_SEGMENT;
58 typedef enum D2D1_FIGURE_BEGIN
60 D2D1_FIGURE_BEGIN_FILLED = 0,
61 D2D1_FIGURE_BEGIN_HOLLOW = 1,
62 D2D1_FIGURE_BEGIN_FORCE_DWORD = 0xffffffff
63 } D2D1_FIGURE_BEGIN;
65 typedef enum D2D1_FIGURE_END
67 D2D1_FIGURE_END_OPEN = 0,
68 D2D1_FIGURE_END_CLOSED = 1,
69 D2D1_FIGURE_END_FORCE_DWORD = 0xffffffff
70 } D2D1_FIGURE_END;
72 typedef enum D2D1_CAP_STYLE
74 D2D1_CAP_STYLE_FLAT = 0,
75 D2D1_CAP_STYLE_SQUARE = 1,
76 D2D1_CAP_STYLE_ROUND = 2,
77 D2D1_CAP_STYLE_TRIANGLE = 3,
78 D2D1_CAP_STYLE_FORCE_DWORD = 0xffffffff,
79 } D2D1_CAP_STYLE;
81 typedef enum D2D1_LINE_JOIN
83 D2D1_LINE_JOIN_MITER = 0,
84 D2D1_LINE_JOIN_BEVEL = 1,
85 D2D1_LINE_JOIN_ROUND = 2,
86 D2D1_LINE_JOIN_MITER_OR_BEVEL = 3,
87 D2D1_LINE_JOIN_FORCE_DWORD = 0xffffffff,
88 } D2D1_LINE_JOIN;
90 typedef enum D2D1_DASH_STYLE
92 D2D1_DASH_STYLE_SOLID = 0,
93 D2D1_DASH_STYLE_DASH = 1,
94 D2D1_DASH_STYLE_DOT = 2,
95 D2D1_DASH_STYLE_DASH_DOT = 3,
96 D2D1_DASH_STYLE_DASH_DOT_DOT = 4,
97 D2D1_DASH_STYLE_CUSTOM = 5,
98 D2D1_DASH_STYLE_FORCE_DWORD = 0xffffffff,
99 } D2D1_DASH_STYLE;
101 typedef enum D2D1_GEOMETRY_RELATION
103 D2D1_GEOMETRY_RELATION_UNKNOWN = 0,
104 D2D1_GEOMETRY_RELATION_DISJOINT = 1,
105 D2D1_GEOMETRY_RELATION_IS_CONTAINED = 2,
106 D2D1_GEOMETRY_RELATION_CONTAINS = 3,
107 D2D1_GEOMETRY_RELATION_OVERLAP = 4,
108 D2D1_GEOMETRY_RELATION_FORCE_DWORD = 0xffffffff,
109 } D2D1_GEOMETRY_RELATION;
111 typedef enum D2D1_GEOMETRY_SIMPLIFICATION_OPTION
113 D2D1_GEOMETRY_SIMPLIFICATION_OPTION_CUBICS_AND_LINES = 0,
114 D2D1_GEOMETRY_SIMPLIFICATION_OPTION_LINES = 1,
115 D2D1_GEOMETRY_SIMPLIFICATION_OPTION_FORCE_DWORD = 0xffffffff,
116 } D2D1_GEOMETRY_SIMPLIFICATION_OPTION;
118 typedef enum D2D1_COMBINE_MODE
120 D2D1_COMBINE_MODE_UNION = 0,
121 D2D1_COMBINE_MODE_INTERSECT = 1,
122 D2D1_COMBINE_MODE_XOR = 2,
123 D2D1_COMBINE_MODE_EXCLUDE = 3,
124 D2D1_COMBINE_MODE_FORCE_DWORD = 0xffffffff,
125 } D2D1_COMBINE_MODE;
127 typedef enum D2D1_SWEEP_DIRECTION
129 D2D1_SWEEP_DIRECTION_COUNTER_CLOCKWISE = 0,
130 D2D1_SWEEP_DIRECTION_CLOCKWISE = 1,
131 D2D1_SWEEP_DIRECTION_FORCE_DWORD = 0xffffffff,
132 } D2D1_SWEEP_DIRECTION;
134 typedef enum D2D1_ARC_SIZE
136 D2D1_ARC_SIZE_SMALL = 0,
137 D2D1_ARC_SIZE_LARGE = 1,
138 D2D1_ARC_SIZE_FORCE_DWORD = 0xffffffff,
139 } D2D1_ARC_SIZE;
141 typedef struct D2D1_BEZIER_SEGMENT
143 D2D1_POINT_2F point1;
144 D2D1_POINT_2F point2;
145 D2D1_POINT_2F point3;
146 } D2D1_BEZIER_SEGMENT;
148 typedef struct D2D1_FACTORY_OPTIONS
150 D2D1_DEBUG_LEVEL debugLevel;
151 } D2D1_FACTORY_OPTIONS;
153 typedef struct D2D1_TRIANGLE
155 D2D1_POINT_2F point1;
156 D2D1_POINT_2F point2;
157 D2D1_POINT_2F point3;
158 } D2D1_TRIANGLE;
160 typedef struct D2D1_ROUNDED_RECT
162 D2D1_RECT_F rect;
163 float radiusX;
164 float radiusY;
165 } D2D1_ROUNDED_RECT;
167 typedef struct D2D1_ELLIPSE
169 D2D1_POINT_2F point;
170 float radiusX;
171 float radiusY;
172 } D2D1_ELLIPSE;
174 typedef struct D2D1_QUADRATIC_BEZIER_SEGMENT
176 D2D1_POINT_2F point1;
177 D2D1_POINT_2F point2;
178 } D2D1_QUADRATIC_BEZIER_SEGMENT;
180 typedef struct D2D1_ARC_SEGMENT
182 D2D1_POINT_2F point;
183 D2D1_SIZE_F size;
184 float rotationAngle;
185 D2D1_SWEEP_DIRECTION sweepDirection;
186 D2D1_ARC_SIZE arcSize;
187 } D2D1_ARC_SEGMENT;
189 interface ID2D1Factory;
192 local,
193 object,
194 uuid(2cd90691-12e2-11dc-9fed-001143a055f9)
196 interface ID2D1Resource : IUnknown
198 void GetFactory(
199 [out] ID2D1Factory **factory
204 local,
205 object,
206 uuid(2cd9069d-12e2-11dc-9fed-001143a055f9)
208 interface ID2D1StrokeStyle : ID2D1Resource
210 D2D1_CAP_STYLE GetStartCap();
211 D2D1_CAP_STYLE GetEndCap();
212 D2D1_CAP_STYLE GetDashCap();
213 float GetMiterLimit();
214 D2D1_LINE_JOIN GetLineJoin();
215 float GetDashOffset();
216 D2D1_DASH_STYLE GetDashStyle();
217 UINT32 GetDashesCount();
218 void GetDashes(
219 [out, size_is(count)] float *dashes,
220 [in] UINT32 count
225 local,
226 object,
227 uuid(2cd9069e-12e2-11dc-9fed-001143a055f9)
229 interface ID2D1SimplifiedGeometrySink : IUnknown
231 void SetFillMode(D2D1_FILL_MODE mode);
232 void SetSegmentFlags(D2D1_PATH_SEGMENT vertexFlags);
233 void BeginFigure(D2D1_POINT_2F startPoint, D2D1_FIGURE_BEGIN figureBegin);
234 void AddLines(const D2D1_POINT_2F *points, UINT32 count);
235 void AddBeziers(const D2D1_BEZIER_SEGMENT *beziers, UINT32 count);
236 void EndFigure(D2D1_FIGURE_END figureEnd);
237 HRESULT Close();
241 local,
242 object,
243 uuid(2cd906c1-12e2-11dc-9fed-001143a055f9)
245 interface ID2D1TessellationSink : IUnknown
247 void AddTriangles(
248 [in, size_is(count)] const D2D1_TRIANGLE *triangles,
249 [in] UINT32 count
251 HRESULT Close();
255 local,
256 object,
257 uuid(2cd906a1-12e2-11dc-9fed-001143a055f9)
259 interface ID2D1Geometry : ID2D1Resource
261 HRESULT GetBounds(
262 [in, optional] const D2D1_MATRIX_3X2_F *transform,
263 [out] D2D1_RECT_F *bounds
265 HRESULT GetWidenedBounds(
266 [in] float stroke_width,
267 [in, optional] ID2D1StrokeStyle *stroke_style,
268 [in, optional] const D2D1_MATRIX_3X2_F *transform,
269 [in] float tolerance,
270 [out] D2D1_RECT_F *bounds
272 HRESULT StrokeContainsPoint(
273 [in] D2D1_POINT_2F point,
274 [in] float stroke_width,
275 [in, optional] ID2D1StrokeStyle *stroke_style,
276 [in, optional] const D2D1_MATRIX_3X2_F *transform,
277 [in] float tolerance,
278 [out] BOOL *contains
280 HRESULT FillContainsPoint(
281 [in] D2D1_POINT_2F point,
282 [in, optional] const D2D1_MATRIX_3X2_F *transform,
283 [in] float tolerance,
284 [out] BOOL *contains
286 HRESULT CompareWithGeometry(
287 [in] ID2D1Geometry *geometry,
288 [in, optional] const D2D1_MATRIX_3X2_F *transform,
289 [in] float tolerance,
290 [out] D2D1_GEOMETRY_RELATION *relation
292 HRESULT Simplify(
293 [in] D2D1_GEOMETRY_SIMPLIFICATION_OPTION option,
294 [in, optional] const D2D1_MATRIX_3X2_F *transform,
295 [in] float tolerance,
296 [in] ID2D1SimplifiedGeometrySink *sink
298 HRESULT Tessellate(
299 [in, optional] const D2D1_MATRIX_3X2_F *transform,
300 [in] float tolerance,
301 [in] ID2D1TessellationSink *sink
303 HRESULT CombineWithGeometry(
304 [in] ID2D1Geometry *geometry,
305 [in] D2D1_COMBINE_MODE combine_mode,
306 [in, optional] const D2D1_MATRIX_3X2_F *transform,
307 [in] float tolerance,
308 [in] ID2D1SimplifiedGeometrySink *sink
310 HRESULT Outline(
311 [in, optional] const D2D1_MATRIX_3X2_F *transform,
312 [in] float tolerance,
313 [in] ID2D1SimplifiedGeometrySink *sink
315 HRESULT ComputeArea(
316 [in, optional] const D2D1_MATRIX_3X2_F *transform,
317 [in] float tolerance,
318 [out] float *area
320 HRESULT ComputeLength(
321 [in, optional] const D2D1_MATRIX_3X2_F *transform,
322 [in] float tolerance,
323 [out] float *length
325 HRESULT ComputePointAtLength(
326 [in] float length,
327 [in, optional] const D2D1_MATRIX_3X2_F *transform,
328 [in] float tolerance,
329 [out, optional] D2D1_POINT_2F *point,
330 [out, optional] D2D1_POINT_2F *tangent
332 HRESULT Widen(
333 [in] float stroke_width,
334 [in, optional] ID2D1StrokeStyle *stroke_style,
335 [in, optional] const D2D1_MATRIX_3X2_F *transform,
336 [in] float tolerance,
337 [in] ID2D1SimplifiedGeometrySink *sink
342 local,
343 object,
344 uuid(2cd906a2-12e2-11dc-9fed-001143a055f9)
346 interface ID2D1RectangleGeometry : ID2D1Geometry
348 void GetRect(
349 [out] D2D1_RECT_F *rect
354 local,
355 object,
356 uuid(2cd906a3-12e2-11dc-9fed-001143a055f9)
358 interface ID2D1RoundedRectangleGeometry : ID2D1Geometry
360 void GetRoundedRect(
361 [out] D2D1_ROUNDED_RECT *rect
366 local,
367 object,
368 uuid(2cd906a4-12e2-11dc-9fed-001143a055f9)
370 interface ID2D1EllipseGeometry : ID2D1Geometry
372 void GetEllipse(
373 [out] D2D1_ELLIPSE *ellipse
378 local,
379 object,
380 uuid(2cd906a6-12e2-11dc-9fed-001143a055f9)
382 interface ID2D1GeometryGroup : ID2D1Geometry
384 D2D1_FILL_MODE GetFillMode();
385 UINT32 GetSourceGeometryCount();
386 void GetSourceGeometries(
387 [out, size_is(geometry_count)] ID2D1Geometry **geometry,
388 [in] UINT32 geometry_count
393 local,
394 object,
395 uuid(2cd906bb-12e2-11dc-9fed-001143a055f9)
397 interface ID2D1TransformedGeometry : ID2D1Geometry
399 void GetSourceGeometry(
400 [out] ID2D1Geometry **geometry
402 void GetTransform(
403 [out] D2D1_MATRIX_3X2_F *transform
408 local,
409 object,
410 uuid(2cd9069f-12e2-11dc-9fed-001143a055f9)
412 interface ID2D1GeometrySink : ID2D1SimplifiedGeometrySink
414 void AddLine(
415 [in] D2D1_POINT_2F point
417 void AddBezier(
418 [in] const D2D1_BEZIER_SEGMENT *bezier
420 void AddQuadraticBezier(
421 [in] const D2D1_QUADRATIC_BEZIER_SEGMENT *bezier
423 void AddQuadraticBeziers(
424 [in, size_is(bezier_count)] const D2D1_QUADRATIC_BEZIER_SEGMENT *beziers,
425 [in] UINT32 bezier_count
427 void AddArc(
428 [in] const D2D1_ARC_SEGMENT *arc
432 [local] HRESULT __stdcall D2D1CreateFactory(D2D1_FACTORY_TYPE factory_type, REFIID iid,
433 const D2D1_FACTORY_OPTIONS *factory_options, void **factory);