1 module aurora.directx.d2d1.d2d1_0;
2 
3 public import aurora.directx.com;
4 public import aurora.directx.dwrite;
5 public import aurora.directx.dxgi;
6 public import aurora.directx.wic;
7 
8 public: 
9 
10 //
11 //	Constants
12 //
13 
14 alias ulong D2D1_TAG;
15 enum D2D1_DEFAULT_FLATTENING_TOLERANCE = 0.25f;
16 enum D2D1_INVALID_TAG = ulong.max;
17 enum D2D1_INVALID_PROPERTY_INDEX = uint.max;
18 enum D2D1_APPEND_ALLIGNED_ELEMENT = -1;
19 
20 //D2DERR
21 enum D2DERR_BAD_NUMBER = 0x88990011;
22 enum D2DERR_BITMAP_BOUND_AS_TARGET = 0x88990025L;
23 enum D2DERR_BITMAP_CANNOT_DRAW = 0x88990021L;
24 enum D2DERR_CYCLIC_GRAPH = 0x88990020L;
25 enum D2DERR_DISPLAY_FORMAT_NOT_SUPPORTED = 0x88990009;
26 enum D2DERR_DISPLAY_STATE_INVALID = 0x88990006;
27 enum D2DERR_EFFECT_IS_NOT_REGISTERED = 0x88990028L;
28 enum D2DERR_EXCEEDS_MAX_BITMAP_SIZE = 0x8899001D;
29 enum D2DERR_INCOMPATIBLE_BRUSH_TYPES = 0x88990018;
30 enum D2DERR_INSUFFICIENT_BUFFER = 0x7A;
31 enum D2DERR_INSUFFICIENT_DEVICE_CAPABILITIES = 0x88990026L;
32 enum D2DERR_INTERMEDIATE_TOO_LARGE = 0x88990027L;
33 enum D2DERR_INTERNAL_ERROR = 0x88990008;
34 enum D2DERR_INVALID_CALL = 0x8899000A;
35 enum D2DERR_INVALID_GRAPH_CONFIGURATION = 0x8899001EL;
36 enum D2DERR_INVALID_INTERNAL_GRAPH_CONFIGURATION = 0x8899001FL;
37 enum D2DERR_INVALID_PROPERTY = 0x88990029L;
38 enum D2DERR_INVALID_TARGET = 0x88990024L;
39 enum D2DERR_LAYER_ALREADY_IN_USE = 0x88990013;
40 enum D2DERR_MAX_TEXTURE_SIZE_EXCEEDED = 0x8899000F;
41 enum D2DERR_NO_HARDWARE_DEVICE = 0x8899000B;
42 enum D2DERR_NO_SUBPROPERTIES = 0x8899002AL;
43 enum D2DERR_NOT_INITIALIZED = 0x88990002;
44 enum D2DERR_ORIGINAL_TARGET_NOT_BOUND = 0x88990023L;
45 enum D2DERR_OUTSTANDING_BITMAP_REFERENCES = 0x88990022L;
46 enum D2DERR_POP_CALL_DID_NOT_MATCH_PUSH = 0x88990014;
47 enum D2DERR_PRINT_FORMAT_NOT_SUPPORTED = 0x8899002CL;
48 enum D2DERR_PRINT_JOB_CLOSED = 0x8899002BL;
49 enum D2DERR_PUSH_POP_UNBALANCED = 0x88990016;
50 enum D2DERR_RECREATE_TARGET = 0x8899000C;
51 enum D2DERR_RENDER_TARGET_HAS_LAYER_OR_CLIPRECT = 0x88990017;
52 enum D2DERR_SCANNER_FAILED = 0x88990004;
53 enum D2DERR_SCREEN_ACCESS_DENIED = 0x88990005;
54 enum D2DERR_SHADER_COMPILE_FAILED = 0x8899000E;
55 enum D2DERR_TARGET_NOT_GDI_COMPATIBLE = 0x8899001A;
56 enum D2DERR_TEXT_EFFECT_IS_WRONG_TYPE = 0x8899001B;
57 enum D2DERR_TEXT_RENDERER_NOT_RELEASED = 0x8899001C;
58 enum D2DERR_TOO_MANY_SHADER_ELEMENTS = 0x8899000D;
59 enum D2DERR_TOO_MANY_TRANSFORM_INPUTS = 0x8899002DL;
60 enum D2DERR_UNSUPPORTED_OPERATION = 0x88990003;
61 enum D2DERR_UNSUPPORTED_PIXEL_FORMAT = 0x88982F80;
62 enum D2DERR_UNSUPPORTED_VERSION = 0x88990010;
63 enum D2DERR_WIN32_ERROR = 0x88990019;
64 enum D2DERR_WRONG_FACTORY = 0x88990012;
65 enum D2DERR_WRONG_RESOURCE_DOMAIN = 0x88990015;
66 enum D2DERR_WRONG_STATE = 0x88990001;
67 enum D2DERR_ZERO_VECTOR = 0x88990007;
68 
69 enum int D2D1_INTERPOLATION_MODE_DEFINITION_NEAREST_NEIGHBOR = 0;
70 enum int D2D1_INTERPOLATION_MODE_DEFINITION_LINEAR = 1;
71 enum int D2D1_INTERPOLATION_MODE_DEFINITION_CUBIC = 2;
72 enum int D2D1_INTERPOLATION_MODE_DEFINITION_MULTI_SAMPLE_LINEAR = 3;
73 enum int D2D1_INTERPOLATION_MODE_DEFINITION_ANISOTROPIC = 4;
74 enum int D2D1_INTERPOLATION_MODE_DEFINITION_HIGH_QUALITY_CUBIC = 5;
75 enum int D2D1_INTERPOLATION_MODE_DEFINITION_FANT = 6;
76 enum int D2D1_INTERPOLATION_MODE_DEFINITION_MIPMAP_LINEAR = 7;
77 
78 //
79 //	Enumerations
80 //
81 
82 public enum D2D1_ALPHA_MODE : int { 
83 	UNKNOWN        = 0,
84 	PREMULTIPLIED  = 1,
85 	STRAIGHT       = 2,
86 	IGNORE         = 3
87 } 
88 
89 public enum D2D1_ANTIALIAS_MODE : int { 
90 	PER_PRIMITIVE  = 0,
91 	ALIASED        = 1
92 } 
93 
94 public enum D2D1_ARC_SIZE { 
95 	SMALL  = 0,
96 	LARGE  = 1
97 } 
98 
99 public enum D2D1_CAP_STYLE : int { 
100 	FLAT      = 0,
101 	SQUARE    = 1,
102 	ROUND     = 2,
103 	TRIANGLE  = 3
104 } 
105 
106 public enum D2D1_COMBINE_MODE : int { 
107 	UNION      = 0,
108 	INTERSECT  = 1,
109 	XOR        = 2,
110 	EXCLUDE    = 3
111 } 
112 
113 public enum D2D1_COMPATIBLE_RENDER_TARGET_OPTIONS : int { 
114 	NONE            = 0x00000000,
115 	GDI_COMPATIBLE  = 0x00000001
116 }
117 
118 public enum D2D1_DASH_STYLE : int { 
119 	SOLID         = 0,
120 	DASH          = 1,
121 	DOT           = 2,
122 	DASH_DOT      = 3,
123 	DASH_DOT_DOT  = 4,
124 	CUSTOM        = 5
125 } 
126 
127 public enum D2D1_DC_INITIALIZE_MODE : int { 
128 	COPY   = 0,
129 	CLEAR  = 1
130 } 
131 
132 public enum D2D1_DEBUG_LEVEL : int { 
133 	NONE         = 0,
134 	ERROR        = 1,
135 	WARNING      = 2,
136 	INFORMATION  = 3
137 } 
138 
139 enum D2D1_BITMAP_INTERPOLATION_MODE
140 {
141     NEAREST_NEIGHBOR = D2D1_INTERPOLATION_MODE_DEFINITION_NEAREST_NEIGHBOR,
142     LINEAR = D2D1_INTERPOLATION_MODE_DEFINITION_LINEAR,
143     FORCE_DWORD = 0xffffffff
144 }
145 
146 public enum D2D1_DRAW_TEXT_OPTIONS : int { 
147 	NO_SNAP            = 0x00000001,
148 	CLIP               = 0x00000002,
149 	NONE               = 0x00000000,
150 	ENABLE_COLOR_FONT  = 0x00000004
151 } 
152 
153 public enum D2D1_EXTEND_MODE : int { 
154 	CLAMP   = 0,
155 	WRAP    = 1,
156 	MIRROR  = 2
157 } 
158 
159 public enum D2D1_FEATURE_LEVEL : int { 
160 	LEVEL_DEFAULT  = 0,
161 	LEVEL_9        = 0x9100,
162 	LEVEL_10       = 0xa000
163 } 
164 
165 public enum D2D1_FIGURE_BEGIN : int { 
166 	FILLED  = 0,
167 	HOLLOW  = 1
168 }
169 
170 public enum D2D1_FIGURE_END : int { 
171 	OPEN    = 0,
172 	CLOSED  = 1
173 } 
174 
175 public enum D2D1_FILL_MODE : int { 
176 	ALTERNATE  = 0,
177 	WINDING    = 1
178 } 
179 
180 public enum D2D1_FACTORY_TYPE : int { 
181 	SINGLE_THREADED  = 0,
182 	MULTI_THREADED   = 1
183 } 
184 
185 public enum D2D1_GAMMA : int { 
186 	GAMMA_2_2  = 0,
187 	GAMMA_1_0  = 1
188 } 
189 
190 public enum D2D1_GEOMETRY_RELATION : int { 
191 	UNKNOWN       = 0,
192 	DISJOINT      = 1,
193 	IS_CONTAINED  = 2,
194 	CONTAINS      = 3,
195 	OVERLAP       = 4
196 } 
197 
198 public enum D2D1_GEOMETRY_SIMPLIFICATION_OPTION : int { 
199 	CUBICS_AND_LINES  = 0,
200 	LINES             = 1
201 } 
202 
203 public enum D2D1_LAYER_OPTIONS : int { 
204 	NONE                      = 0x00000000,
205 	INITIALIZE_FOR_CLEARTYPE  = 0x00000001
206 } 
207 
208 public enum D2D1_LINE_JOIN : int { 
209 	MITER           = 0,
210 	BEVEL           = 1,
211 	ROUND           = 2,
212 	MITER_OR_BEVEL  = 3
213 } 
214 
215 public enum D2D1_OPACITY_MASK_CONTENT : int { 
216 	GRAPHICS             = 0,
217 	TEXT_NATURAL         = 1,
218 	TEXT_GDI_COMPATIBLE  = 2
219 } 
220 
221 public enum D2D1_PATH_SEGMENT : int { 
222 	NONE                   = 0x00000000,
223 	FORCE_UNSTROKED        = 0x00000001,
224 	FORCE_ROUND_LINE_JOIN  = 0x00000002
225 } 
226 
227 public enum D2D1_PRESENT_OPTIONS : int { 
228 	NONE             = 0x00000000,
229 	RETAIN_CONTENTS  = 0x00000001,
230 	IMMEDIATELY      = 0x00000002
231 } 
232 
233 public enum D2D1_RENDER_TARGET_TYPE : int { 
234 	DEFAULT    = 0,
235 	SOFTWARE   = 1,
236 	HARDWARE   = 2
237 } 
238 
239 public enum D2D1_RENDER_TARGET_USAGE : int { 
240 	NONE                   = 0x00000000,
241 	FORCE_BITMAP_REMOTING  = 0x00000001,
242 	GDI_COMPATIBLE         = 0x00000002
243 } 
244 
245 public enum D2D1_SWEEP_DIRECTION : int { 
246 	COUNTER_CLOCKWISE  = 0,
247 	CLOCKWISE          = 1
248 } 
249 
250 public enum D2D1_TEXT_ANTIALIAS_MODE : int { 
251 	DEFAULT    = 0,
252 	CLEARTYPE  = 1,
253 	GRAYSCALE  = 2,
254 	ALIASED    = 3
255 } 
256 
257 public enum D2D1_WINDOW_STATE : int { 
258 	NONE      = 0x0000000,
259 	OCCLUDED  = 0x0000001
260 } 
261 
262 //
263 //	Structures
264 //
265 alias D3DCOLORVALUE D2D_COLOR_F;
266 alias D2D_COLOR_F D2D1_COLOR_F;
267 
268 public struct D2D_MATRIX_3X2_F {
269 	float _11;
270 	float _12;
271 	float _21;
272 	float _22;
273 	float _31;
274 	float _32;
275 }
276 alias D2D_MATRIX_3X2_F D2D1_MATRIX_3X2_F;
277 
278 public struct D2D_MATRIX_4X3_F {
279 	union {
280 		struct {
281 			float _11, _12, _13;
282 			float _21, _22, _23;
283 			float _31, _32, _33;
284 			float _41, _42, _43;
285 		}
286 		float[4][3] m;
287 	}
288 }
289 alias D2D_MATRIX_4X3_F D2D1_MATRIX_4X3_F;
290 
291 public struct D2D_MATRIX_4X4_F {
292 	union {
293 		struct {
294 			float _11, _12, _13, _14;
295 			float _21, _22, _23, _24;
296 			float _31, _32, _33, _34;
297 			float _41, _42, _43, _44;
298 		}
299 		float[4][4] m;
300 	}
301 }
302 alias D2D_MATRIX_4X4_F D2D1_MATRIX_4X4_F;
303 
304 public struct D2D_MATRIX_5X4_F {
305 	union {
306 		struct {
307 			float _11, _12, _13, _14;
308 			float _21, _22, _23, _24;
309 			float _31, _32, _33, _34;
310 			float _41, _42, _43, _44;
311 			float _51, _52, _53, _54;
312 		}
313 		float[5][4] m;
314 	}
315 }
316 alias D2D_MATRIX_5X4_F D2D1_MATRIX_5X4_F;
317 
318 public struct D2D_POINT_2F {
319 	float x;
320 	float y;
321 }
322 alias D2D_POINT_2F D2D1_POINT_2F;
323 
324 public struct POINT {
325 	long x;
326 	long y;
327 } 
328 alias POINT D2D_POINT_2L;
329 
330 public struct D2D_POINT_2U {
331 	uint x;
332 	uint y;
333 }
334 alias D2D_POINT_2U D2D1_POINT_2U;
335 
336 public struct D2D_RECT_F {
337 	float left;
338 	float top;
339 	float right;
340 	float bottom;
341 }
342 alias D2D_RECT_F D2D1_RECT_F;
343 
344 alias RECT D2D_RECT_L;
345 
346 public struct D2D_RECT_U {
347 	uint left;
348 	uint top;
349 	uint right;
350 	uint bottom;
351 }
352 alias D2D_RECT_U D2D1_RECT_U;
353 
354 public struct D2D_SIZE_F {
355 	float width;
356 	float height;
357 }
358 alias D2D_SIZE_F D2D1_SIZE_F;
359 
360 public struct D2D_SIZE_U {
361 	uint width;
362 	uint height;
363 }
364 alias D2D_SIZE_U D2D1_SIZE_U;
365 
366 public struct D2D_VECTOR_2F {
367 	float x;
368 	float y;
369 }
370 
371 public struct D2D_VECTOR_3F {
372 	float x;
373 	float y;
374 	float z;
375 }
376 
377 public struct D2D_VECTOR_4F {
378 	float x;
379 	float y;
380 	float z;
381 	float w;
382 }
383 
384 public struct D2D1_ARC_SEGMENT {
385 	D2D1_POINT_2F        point;
386 	D2D1_SIZE_F          size;
387 	float                rotationAngle;
388 	D2D1_SWEEP_DIRECTION sweepDirection;
389 	D2D1_ARC_SIZE        arcSize;
390 }
391 
392 public struct D2D1_BEZIER_SEGMENT {
393 	D2D1_POINT_2F point1;
394 	D2D1_POINT_2F point2;
395 	D2D1_POINT_2F point3;
396 }
397 
398 public struct D2D1_BITMAP_BRUSH_PROPERTIES {
399 	D2D1_EXTEND_MODE               extendModeX;
400 	D2D1_EXTEND_MODE               extendModeY;
401 	D2D1_BITMAP_INTERPOLATION_MODE interpolationMode;
402 }
403 
404 public struct D2D1_BITMAP_PROPERTIES {
405 	D2D1_PIXEL_FORMAT pixelFormat;
406 	float             dpiX;
407 	float             dpiY;
408 }
409 
410 public struct D2D1_BRUSH_PROPERTIES {
411 	float             opacity;
412 	D2D1_MATRIX_3X2_F transform;
413 }
414 
415 public struct D2D1_DRAWING_STATE_DESCRIPTION {
416 	D2D1_ANTIALIAS_MODE      antialiasMode;
417 	D2D1_TEXT_ANTIALIAS_MODE textAntialiasMode;
418 	D2D1_TAG                 tag1;
419 	D2D1_TAG                 tag2;
420 	D2D1_MATRIX_3X2_F        transform;
421 }
422 
423 public struct D2D1_ELLIPSE {
424 	D2D1_POINT_2F point;
425 	float         radiusX;
426 	float         radiusY;
427 }
428 
429 public struct D2D1_FACTORY_OPTIONS {
430 	D2D1_DEBUG_LEVEL debugLevel;
431 }
432 
433 public struct D2D1_GRADIENT_STOP {
434 	FLOAT        position;
435 	D2D1_COLOR_F color;
436 }
437 
438 public struct D2D1_HWND_RENDER_TARGET_PROPERTIES {
439 	HWND                 hwnd;
440 	D2D1_SIZE_U          pixelSize;
441 	D2D1_PRESENT_OPTIONS presentOptions;
442 }
443 
444 public struct D2D1_LAYER_PARAMETERS {
445 	D2D1_RECT_F         contentBounds;
446 	ID2D1Geometry       geometricMask;
447 	D2D1_ANTIALIAS_MODE maskAntialiasMode;
448 	D2D1_MATRIX_3X2_F   maskTransform;
449 	FLOAT               opacity;
450 	ID2D1Brush          opacityBrush;
451 	D2D1_LAYER_OPTIONS  layerOptions;
452 }
453 
454 public struct D2D1_LINEAR_GRADIENT_BRUSH_PROPERTIES {
455 	D2D1_POINT_2F startPoint;
456 	D2D1_POINT_2F endPoint;
457 }
458 
459 public struct D2D1_PIXEL_FORMAT {
460 	DXGI_FORMAT     format;
461 	D2D1_ALPHA_MODE alphaMode;
462 }
463 
464 public struct D2D1_QUADRATIC_BEZIER_SEGMENT {
465 	D2D1_POINT_2F point1;
466 	D2D1_POINT_2F point2;
467 }
468 
469 public struct D2D1_RADIAL_GRADIENT_BRUSH_PROPERTIES {
470 	D2D1_POINT_2F center;
471 	D2D1_POINT_2F gradientOriginOffset;
472 	float         radiusX;
473 	float         radiusY;
474 }
475 
476 public struct D2D1_RENDER_TARGET_PROPERTIES {
477 	D2D1_RENDER_TARGET_TYPE  type;
478 	D2D1_PIXEL_FORMAT        pixelFormat;
479 	float                    dpiX;
480 	float                    dpiY;
481 	D2D1_RENDER_TARGET_USAGE usage;
482 	D2D1_FEATURE_LEVEL       minLevel;
483 }
484 
485 public struct D2D1_ROUNDED_RECT {
486 	D2D1_RECT_F rect;
487 	float       radiusX;
488 	float       radiusY;
489 }
490 
491 public struct D2D1_STROKE_STYLE_PROPERTIES {
492 	D2D1_CAP_STYLE  startCap;
493 	D2D1_CAP_STYLE  endCap;
494 	D2D1_CAP_STYLE  dashCap;
495 	D2D1_LINE_JOIN  lineJoin;
496 	float           miterLimit;
497 	D2D1_DASH_STYLE dashStyle;
498 	float           dashOffset;
499 }
500 
501 public struct D2D1_TRIANGLE {
502 	D2D1_POINT_2F point1;
503 	D2D1_POINT_2F point2;
504 	D2D1_POINT_2F point3;
505 }
506 
507 //
508 //	Interfaces
509 //
510 
511 mixin(uuid!(ID2D1Bitmap, "a2296057-ea42-4099-983b-539fb6505426"));
512 public interface ID2D1Bitmap : ID2D1Image
513 {
514 extern(Windows):
515 	HRESULT CopyFromBitmap(const D2D1_POINT_2U *destPoint, ID2D1Bitmap bitmap, const D2D1_RECT_U *srcRect);
516 	HRESULT CopyFromMemory(const D2D1_RECT_U *dstRect, const void *srcData, uint pitch);
517 	HRESULT CopyFromRenderTarget(const D2D1_POINT_2U *destPoint, ID2D1RenderTarget renderTarget, const D2D1_RECT_U *srcRect);
518 	void GetDpi(float *dpiX, float *dpiY);
519 	D2D1_PIXEL_FORMAT GetPixelFormat();
520 	D2D1_SIZE_U GetPixelSize();
521 	D2D1_SIZE_F GetSize();
522 }
523 
524 mixin(uuid!(ID2D1BitmapBrush, "2cd906aa-12e2-11dc-9fed-001143a055f9"));
525 public interface ID2D1BitmapBrush : ID2D1Brush
526 {
527 extern(Windows):
528 	void GetBitmap(ID2D1Bitmap *bitmap);
529 	D2D1_EXTEND_MODE GetExtendModeX();
530 	D2D1_EXTEND_MODE GetExtendModeY();
531 	D2D1_BITMAP_INTERPOLATION_MODE GetInterpolationMode();
532 	void SetBitmap(ID2D1Bitmap bitmap);
533 	void SetExtendModeX(D2D1_EXTEND_MODE extendModeX);
534 	void SetExtendModeY(D2D1_EXTEND_MODE extendModeY);
535 	void SetInterpolationMode(D2D1_BITMAP_INTERPOLATION_MODE interpolationMode);
536 }
537 
538 mixin(uuid!(ID2D1BitmapRenderTarget, "2cd90695-12e2-11dc-9fed-001143a055f9"));
539 public interface ID2D1BitmapRenderTarget : ID2D1RenderTarget
540 {
541 extern(Windows):
542 	HRESULT GetBitmap(ID2D1Bitmap *bitmap);
543 }
544 
545 mixin(uuid!(ID2D1Brush, "2cd906a8-12e2-11dc-9fed-001143a055f9"));
546 public interface ID2D1Brush : ID2D1Resource
547 {
548 extern(Windows):
549 	float GetOpacity();
550 	void GetTransform(D2D1_MATRIX_3X2_F *transform);
551 	void SetOpacity(float opacity);
552 	void SetTransform(const D2D1_MATRIX_3X2_F *transform);
553 }
554 
555 mixin(uuid!(ID2D1DCRenderTarget, "1c51bc64-de61-46fd-9899-63a5d8f03950"));
556 public interface ID2D1DCRenderTarget : ID2D1RenderTarget
557 {
558 extern(Windows):
559 	HRESULT BindDC(const HDC hDC, const RECT *pSubRect);
560 }
561 
562 mixin(uuid!(ID2D1DrawingStateBlock, "28506e39-ebf6-46a1-bb47-fd85565ab957"));
563 public interface ID2D1DrawingStateBlock : ID2D1Resource
564 {
565 extern(Windows):
566 	void GetDescription(D2D1_DRAWING_STATE_DESCRIPTION *stateDescription);
567 	void GetTextRenderingParams(IDWriteRenderingParams *textRenderingParams);
568 	void SetDescription(D2D1_DRAWING_STATE_DESCRIPTION *stateDescription);
569 	void SetTextRenderingParams(IDWriteRenderingParams textRenderingParams = null);
570 }
571 
572 mixin(uuid!(ID2D1EllipseGeometry, "2cd906a4-12e2-11dc-9fed-001143a055f9"));
573 public interface ID2D1EllipseGeometry : ID2D1Geometry
574 {
575 extern(Windows):
576 	void GetEllipse(D2D1_ELLIPSE *ellipse);
577 }
578 
579 mixin(uuid!(ID2D1Factory, "2cd906a4-12e2-11dc-9fed-001143a055f9"));
580 public interface ID2D1Factory : IUnknown
581 {
582 extern(Windows):
583 	HRESULT CreateDCRenderTarget(const D2D1_RENDER_TARGET_PROPERTIES *renderTargetProperties, ID2D1DCRenderTarget *dcRenderTarget);
584 	HRESULT CreateDrawingStateBlock(const D2D1_DRAWING_STATE_DESCRIPTION *drawingStateDescription, IDWriteRenderingParams textRenderingParams, ID2D1DrawingStateBlock *drawingStateBlock);
585 	HRESULT CreateDrawingStateBlock(ID2D1DrawingStateBlock *drawingStateBlock);
586 	HRESULT CreateDrawingStateBlock(const D2D1_DRAWING_STATE_DESCRIPTION *drawingStateDescription, ID2D1DrawingStateBlock *drawingStateBlock);
587 	HRESULT CreateDxgiSurfaceRenderTarget(IDXGISurface dxgiSurface, const D2D1_RENDER_TARGET_PROPERTIES *renderTargetProperties, ID2D1RenderTarget *renderTarget);
588 	HRESULT CreateEllipseGeometry(const D2D1_ELLIPSE *ellipse, ID2D1EllipseGeometry *ellipseGeometry);
589 	HRESULT CreateGeometryGroup(D2D1_FILL_MODE fillMode, ID2D1Geometry *geometries, uint geometriesCount, ID2D1GeometryGroup *geometryGroup);
590 	HRESULT CreateHwndRenderTarget(D2D1_RENDER_TARGET_PROPERTIES *renderTargetProperties, D2D1_HWND_RENDER_TARGET_PROPERTIES *hwndRenderTargetProperties, ID2D1HwndRenderTarget *hwndRenderTarget);
591 	HRESULT CreatePathGeometry(ID2D1PathGeometry *pathGeometry);
592 	HRESULT CreateRectangleGeometry(const D2D1_RECT_F *rectangle, ID2D1RectangleGeometry *rectangleGeometry);
593 	HRESULT CreateRoundedRectangleGeometry(const D2D1_ROUNDED_RECT *roundedRectangle, ID2D1RoundedRectangleGeometry *roundedRectangleGeometry);
594 	HRESULT CreateStrokeStyle(const D2D1_STROKE_STYLE_PROPERTIES *strokeStyleProperties, const(float) *dashes, uint dashesCount, ID2D1StrokeStyle *strokeStyle);
595 	HRESULT CreateTransformedGeometry(ID2D1Geometry sourceGeometry, const D2D1_MATRIX_3X2_F *transform, ID2D1TransformedGeometry *transformedGeometry);
596 	HRESULT CreateWicBitmapRenderTarget(IWICBitmap target, const D2D1_RENDER_TARGET_PROPERTIES *renderTargetProperties, ID2D1RenderTarget *renderTarget);
597 	void GetDesktopDpi(float *dpiX, float *dpiY);
598 	HRESULT ReloadSystemMetrics();
599 }
600 
601 mixin(uuid!(ID2D1GdiInteropRenderTarget, "e0db51c3-6f77-4bae-b3d5-e47509b35838"));
602 public interface ID2D1GdiInteropRenderTarget : IUnknown
603 {
604 extern(Windows):
605 	HRESULT GetDC(D2D1_DC_INITIALIZE_MODE mode, HDC *hdc);
606 	HRESULT ReleaseDC(RECT *update);
607 }
608 
609 mixin(uuid!(ID2D1Geometry, "2cd906a1-12e2-11dc-9fed-001143a055f9"));
610 public interface ID2D1Geometry : ID2D1Resource
611 {
612 extern(Windows):
613 	HRESULT CombineWithGeometry(ID2D1Geometry inputGeometry, D2D1_COMBINE_MODE combineMode, D2D1_MATRIX_3X2_F *inputGeometryTransform, ID2D1SimplifiedGeometrySink geometrySink);
614 	HRESULT CombineWithGeometry(ID2D1Geometry inputGeometry, D2D1_COMBINE_MODE combineMode, const D2D1_MATRIX_3X2_F *inputGeometryTransform, float flatteningTolerance, ID2D1SimplifiedGeometrySink geometrySink);
615 	HRESULT CompareWithGeometry(ID2D1Geometry inputGeometry, const D2D1_MATRIX_3X2_F *inputGeometryTransform, D2D1_GEOMETRY_RELATION *relation);
616 	HRESULT CompareWithGeometry(ID2D1Geometry inputGeometry, const D2D1_MATRIX_3X2_F *inputGeometryTransform, float flatteningTolerance, D2D1_GEOMETRY_RELATION *relation);
617 	HRESULT ComputeArea(const D2D1_MATRIX_3X2_F *worldTransform, float *area);
618 	HRESULT ComputeArea(const D2D1_MATRIX_3X2_F *worldTransform, float flatteningTolerance, float *area);
619 	HRESULT ComputeLength(const D2D1_MATRIX_3X2_F *worldTransform, float *length);
620 	HRESULT ComputeLength(const D2D1_MATRIX_3X2_F *worldTransform, float flatteningTolerance, float *length);
621 	HRESULT ComputePointAtLength(float length, const D2D1_MATRIX_3X2_F *worldTransform, D2D1_POINT_2F *point, D2D1_POINT_2F *unitTangentVector);
622 	HRESULT ComputePointAtLength(float length, const D2D1_MATRIX_3X2_F *worldTransform, float flatteningTolerance, D2D1_POINT_2F *point, D2D1_POINT_2F *unitTangentVector);
623 	HRESULT FillContainsPoint(D2D1_POINT_2F point, const D2D1_MATRIX_3X2_F *worldTransform, BOOL *contains);
624 	HRESULT FillContainsPoint(D2D1_POINT_2F point, const D2D1_MATRIX_3X2_F *worldTransform, float flatteningTolerance, BOOL *contains);
625 	HRESULT GetBounds(const D2D1_MATRIX_3X2_F *worldTransform, D2D1_RECT_F *bounds);
626 	HRESULT GetWidenedBounds(float strokeWidth, ID2D1StrokeStyle strokeStyle, const D2D1_MATRIX_3X2_F *worldTransform, D2D1_RECT_F *bounds);
627 	HRESULT GetWidenedBounds(float strokeWidth, ID2D1StrokeStyle strokeStyle, const D2D1_MATRIX_3X2_F *worldTransform, float flatteningTolerance, D2D1_RECT_F *bounds);
628 	HRESULT Outline(const D2D1_MATRIX_3X2_F *worldTransform, ID2D1SimplifiedGeometrySink geometrySink);
629 	HRESULT Outline(const D2D1_MATRIX_3X2_F *worldTransform, float flatteningTolerance, ID2D1SimplifiedGeometrySink geometrySink);
630 	HRESULT Simplify(D2D1_GEOMETRY_SIMPLIFICATION_OPTION simplificationOption, const D2D1_MATRIX_3X2_F *worldTransform, ID2D1SimplifiedGeometrySink geometrySink);
631 	HRESULT Simplify(D2D1_GEOMETRY_SIMPLIFICATION_OPTION simplificationOption, const D2D1_MATRIX_3X2_F *worldTransform, float flatteningTolerance, ID2D1SimplifiedGeometrySink geometrySink);
632 	HRESULT StrokeContainsPoint(D2D1_POINT_2F point, float strokeWidth, ID2D1StrokeStyle strokeStyle, const D2D1_MATRIX_3X2_F *worldTransform, BOOL *contains);
633 	HRESULT StrokeContainsPoint(D2D1_POINT_2F point, float strokeWidth, ID2D1StrokeStyle strokeStyle, const D2D1_MATRIX_3X2_F *worldTransform, float flatteningTolerance, BOOL *contains);
634 	HRESULT Tessellate(const D2D1_MATRIX_3X2_F *worldTransform, ID2D1TessellationSink tessellationSink);
635 	HRESULT Tessellate(const D2D1_MATRIX_3X2_F *worldTransform, float flatteningTolerance, ID2D1TessellationSink tessellationSink);
636 	HRESULT Widen(float strokeWidth, ID2D1StrokeStyle strokeStyle, const D2D1_MATRIX_3X2_F *worldTransform, ID2D1SimplifiedGeometrySink geometrySink);
637 	HRESULT Widen(float strokeWidth, ID2D1StrokeStyle strokeStyle, const D2D1_MATRIX_3X2_F *worldTransform, float flatteningTolerance, ID2D1SimplifiedGeometrySink geometrySink);
638 }
639 
640 mixin(uuid!(ID2D1GeometryGroup, "2cd906a6-12e2-11dc-9fed-001143a055f9"));
641 public interface ID2D1GeometryGroup : ID2D1Geometry
642 {
643 extern(Windows):
644 	void GetSourceGeometries(const ID2D1Geometry *geometries, uint geometriesCount);
645 	D2D1_FILL_MODE GetFillMode();
646 	uint GetSourceGeometryCount();
647 }
648 
649 mixin(uuid!(ID2D1GeometrySink, "2cd9069f-12e2-11dc-9fed-001143a055f9"));
650 public interface ID2D1GeometrySink : ID2D1SimplifiedGeometrySink
651 {
652 extern(Windows):
653 	void AddArc(D2D1_ARC_SEGMENT *arc);
654 	void AddBezier(const D2D1_BEZIER_SEGMENT *bezier);
655 	void AddLine(D2D1_POINT_2F point);
656 	void AddQuadraticBezier(const D2D1_QUADRATIC_BEZIER_SEGMENT *bezier);
657 	void AddQuadraticBeziers(const D2D1_QUADRATIC_BEZIER_SEGMENT *beziers, uint bezierCount);
658 }
659 
660 mixin(uuid!(ID2D1GradientStopCollection, "2cd906a7-12e2-11dc-9fed-001143a055f9"));
661 public interface ID2D1GradientStopCollection : ID2D1Resource
662 {
663 extern(Windows):
664 	D2D1_GAMMA GetColorInterpolationGamma();
665 	D2D1_EXTEND_MODE GetExtendMode();
666 	uint GetGradientStopCount();
667 	void GetGradientStops(D2D1_GRADIENT_STOP *gradientStops, uint gradientStopsCount);
668 }
669 
670 mixin(uuid!(ID2D1HwndRenderTarget, "2cd90698-12e2-11dc-9fed-001143a055f9"));
671 public interface ID2D1HwndRenderTarget : ID2D1RenderTarget
672 {
673 extern(Windows):
674 	D2D1_WINDOW_STATE CheckWindowState();
675 	HWND GetHwnd();
676 	HRESULT Resize(D2D1_SIZE_U *pixelSize);
677 }
678 
679 mixin(uuid!(ID2D1Image, "65019f75-8da2-497c-b32c-dfa34e48ede6"));
680 public interface ID2D1Image : ID2D1Resource
681 {
682 extern(Windows):
683 }
684 
685 mixin(uuid!(ID2D1Layer, "2cd9069b-12e2-11dc-9fed-001143a055f9"));
686 public interface ID2D1Layer : ID2D1Resource
687 {
688 extern(Windows):
689 	D2D1_SIZE_F GetSize();
690 }
691 
692 mixin(uuid!(ID2D1LinearGradientBrush, "2cd906ab-12e2-11dc-9fed-001143a055f9"));
693 public interface ID2D1LinearGradientBrush : ID2D1Brush
694 {
695 extern(Windows):
696 	D2D1_POINT_2F GetEndPoint();
697 	void GetGradientStopCollection(ID2D1GradientStopCollection *gradientStopCollection);
698 	D2D1_POINT_2F GetStartPoint();
699 	void SetEndPoint(D2D1_POINT_2F endPoint);
700 	void SetStartPoint(D2D1_POINT_2F startPoint);
701 }
702 
703 mixin(uuid!(ID2D1Mesh, "2cd906c2-12e2-11dc-9fed-001143a055f9"));
704 public interface ID2D1Mesh : ID2D1Resource
705 {
706 extern(Windows):
707 	HRESULT Open(ID2D1TessellationSink *tessellationSink);
708 }
709 
710 mixin(uuid!(ID2D1PathGeometry, "2cd906a5-12e2-11dc-9fed-001143a055f9"));
711 public interface ID2D1PathGeometry : ID2D1Geometry
712 {
713 extern(Windows):
714 	HRESULT GetFigureCount(uint *count);
715 	HRESULT GetSegmentCount(uint *count);
716 	HRESULT Open(ID2D1GeometrySink *geometrySink);
717 	HRESULT Stream(ID2D1GeometrySink geometrySink);
718 }
719 
720 mixin(uuid!(ID2D1RadialGradientBrush, "2cd906ac-12e2-11dc-9fed-001143a055f9"));
721 public interface ID2D1RadialGradientBrush : ID2D1Brush
722 {
723 extern(Windows):
724 	D2D1_POINT_2F GetCenter();
725 	D2D1_POINT_2F GetGradientOriginOffset();
726 	void GetGradientStopCollection(ID2D1GradientStopCollection *gradientStopCollection);
727 	float GetRadiusX();
728 	float GetRadiusY();
729 	void SetCenter(D2D1_POINT_2F center);
730 	void SetGradientOriginOffset(D2D1_POINT_2F gradientOriginOffset);
731 	void SetRadiusX(float radiusX);
732 	void SetRadiusY(float radiusY);
733 }
734 
735 mixin(uuid!(ID2D1RectangleGeometry, "2cd906a2-12e2-11dc-9fed-001143a055f9"));
736 public interface ID2D1RectangleGeometry : ID2D1Geometry
737 {
738 extern(Windows):
739 	void GetRect(D2D1_RECT_F *rect);
740 }
741 
742 mixin(uuid!(ID2D1RenderTarget, "2cd90694-12e2-11dc-9fed-001143a055f9"));
743 public interface ID2D1RenderTarget : ID2D1Resource
744 {
745 extern(Windows):
746 	void BeginDraw();
747 	void Clear(const D2D1_COLOR_F *clearColor = null);
748 	HRESULT CreateBitmap(D2D1_SIZE_U size, const D2D1_BITMAP_PROPERTIES *bitmapProperties, ID2D1Bitmap *bitmap);
749 	HRESULT CreateBitmap(D2D1_SIZE_U size, void *srcData, uint pitch, const D2D1_BITMAP_PROPERTIES *bitmapProperties, ID2D1Bitmap *bitmap);
750 	HRESULT CreateBitmapBrush(ID2D1Bitmap bitmap, D2D1_BITMAP_BRUSH_PROPERTIES *bitmapBrushProperties, D2D1_BRUSH_PROPERTIES *brushProperties, ID2D1BitmapBrush *bitmapBrush);
751 	HRESULT CreateBitmapBrush(ID2D1Bitmap bitmap, ID2D1BitmapBrush *bitmapBrush);
752 	HRESULT CreateBitmapBrush(ID2D1Bitmap bitmap, const D2D1_BITMAP_BRUSH_PROPERTIES *bitmapBrushProperties, ID2D1BitmapBrush *bitmapBrush);
753 	HRESULT CreateBitmapFromWicBitmap(IWICBitmapSource wicBitmapSource, ID2D1Bitmap *bitmap);
754 	HRESULT CreateBitmapFromWicBitmap(IWICBitmapSource wicBitmapSource, const D2D1_BITMAP_PROPERTIES *bitmapProperties, ID2D1Bitmap *bitmap);
755 	HRESULT CreateCompatibleRenderTarget(D2D1_SIZE_F desiredSize, D2D1_SIZE_U desiredPixelSize, D2D1_PIXEL_FORMAT desiredFormat, D2D1_COMPATIBLE_RENDER_TARGET_OPTIONS options, ID2D1BitmapRenderTarget *bitmapRenderTarget);
756 	HRESULT CreateCompatibleRenderTarget(D2D1_SIZE_F *desiredSize, D2D1_SIZE_U *desiredPixelSize, D2D1_PIXEL_FORMAT *desiredFormat, D2D1_COMPATIBLE_RENDER_TARGET_OPTIONS options, ID2D1BitmapRenderTarget *bitmapRenderTarget);
757 	HRESULT CreateCompatibleRenderTarget(ID2D1BitmapRenderTarget *bitmapRenderTarget);
758 	HRESULT CreateCompatibleRenderTarget(D2D1_SIZE_F desiredSize, ID2D1BitmapRenderTarget *bitmapRenderTarget);
759 	HRESULT CreateCompatibleRenderTarget(D2D1_SIZE_F desiredSize, D2D1_SIZE_U desiredPixelSize, ID2D1BitmapRenderTarget *bitmapRenderTarget);
760 	HRESULT CreateCompatibleRenderTarget(D2D1_SIZE_F desiredSize, D2D1_SIZE_U desiredPixelSize, D2D1_PIXEL_FORMAT desiredFormat, ID2D1BitmapRenderTarget *bitmapRenderTarget);
761 	HRESULT CreateGradientStopCollection(const D2D1_GRADIENT_STOP *gradientStops, uint gradientStopsCount, D2D1_GAMMA colorInterpolationGamma, D2D1_EXTEND_MODE extendMode, ID2D1GradientStopCollection *gradientStopCollection);
762 	HRESULT CreateGradientStopCollection(D2D1_GRADIENT_STOP *gradientStops, uint gradientStopsCount, ID2D1GradientStopCollection *gradientStopCollection);
763 	HRESULT CreateLayer(ID2D1Layer *layer);
764 	HRESULT CreateLayer(D2D1_SIZE_F size, ID2D1Layer *layer);
765 	HRESULT CreateLayer(D2D1_SIZE_F *size, ID2D1Layer *layer);
766 	HRESULT CreateLinearGradientBrush(const D2D1_LINEAR_GRADIENT_BRUSH_PROPERTIES *linearGradientBrushProperties, ID2D1GradientStopCollection gradientStopCollection, ID2D1LinearGradientBrush *linearGradientBrush);
767 	HRESULT CreateLinearGradientBrush(const D2D1_LINEAR_GRADIENT_BRUSH_PROPERTIES *linearGradientBrushProperties, const D2D1_BRUSH_PROPERTIES *brushProperties, ID2D1GradientStopCollection gradientStopCollection, ID2D1LinearGradientBrush *linearGradientBrush);
768 	HRESULT CreateMesh(ID2D1Mesh *mesh);
769 	HRESULT CreateRadialGradientBrush(const D2D1_RADIAL_GRADIENT_BRUSH_PROPERTIES *radialGradientBrushProperties, const D2D1_BRUSH_PROPERTIES *brushProperties, ID2D1GradientStopCollection gradientStopCollection, ID2D1RadialGradientBrush *radialGradientBrush);
770 	HRESULT CreateRadialGradientBrush(const D2D1_RADIAL_GRADIENT_BRUSH_PROPERTIES *radialGradientBrushProperties, ID2D1GradientStopCollection gradientStopCollection, ID2D1RadialGradientBrush *radialGradientBrush);
771 	HRESULT CreateSharedBitmap(IID* riid, void *data, D2D1_BITMAP_PROPERTIES *bitmapProperties, ID2D1Bitmap *bitmap);
772 	HRESULT CreateSolidColorBrush(const D2D1_COLOR_F *color, ID2D1SolidColorBrush *solidColorBrush);
773 	HRESULT CreateSolidColorBrush(const D2D1_COLOR_F *color, const D2D1_BRUSH_PROPERTIES *brushProperties, ID2D1SolidColorBrush *solidColorBrush);
774 	void DrawBitmap(ID2D1Bitmap bitmap, const D2D1_RECT_F *destinationRectangle = null, float opacity = 1.0f, D2D1_BITMAP_INTERPOLATION_MODE interpolationMode = D2D1_BITMAP_INTERPOLATION_MODE.LINEAR, const D2D1_RECT_F *sourceRectangle = null);
775 	void DrawEllipse(const D2D1_ELLIPSE *ellipse, ID2D1Brush brush, float strokeWidth = 1.0f, ID2D1StrokeStyle strokeStyle = null);
776 	void DrawGeometry(ID2D1Geometry geometry, ID2D1Brush brush, float strokeWidth = 1.0f, ID2D1StrokeStyle strokeStyle = null);
777 	void DrawGlyphRun(D2D1_POINT_2F baselineOrigin, const DWRITE_GLYPH_RUN *glyphRun, ID2D1Brush foregroundBrush, DWRITE_MEASURING_MODE measuringMode = DWRITE_MEASURING_MODE.NATURAL);
778 	void DrawLine(D2D1_POINT_2F point0, D2D1_POINT_2F point1, ID2D1Brush brush, float strokeWidth = 1.0f, ID2D1StrokeStyle strokeStyle = null);
779 	void DrawRectangle(const D2D1_RECT_F *rect, ID2D1Brush brush, float strokeWidth = 1.0f, ID2D1StrokeStyle strokeStyle = null);
780 	void DrawRoundedRectangle(const D2D1_ROUNDED_RECT *roundedRect, ID2D1Brush brush, float strokeWidth = 1.0f, ID2D1StrokeStyle strokeStyle = null);
781 	void DrawText(wchar *string, uint stringLength, IDWriteTextFormat textFormat, const D2D1_RECT_F *layoutRect, ID2D1Brush defaultForegroundBrush, D2D1_DRAW_TEXT_OPTIONS options = D2D1_DRAW_TEXT_OPTIONS.NONE, DWRITE_MEASURING_MODE measuringMode = DWRITE_MEASURING_MODE.NATURAL);
782 	void DrawTextLayout(D2D1_POINT_2F origin, IDWriteTextLayout textLayout, ID2D1Brush defaultForegroundBrush, D2D1_DRAW_TEXT_OPTIONS options = D2D1_DRAW_TEXT_OPTIONS.NONE);
783 	HRESULT EndDraw(D2D1_TAG *tag1 = null, D2D1_TAG *tag2 = null);
784 	void FillEllipse(const D2D1_ELLIPSE *ellipse, ID2D1Brush brush);
785 	void FillGeometry(ID2D1Geometry geometry, ID2D1Brush brush, ID2D1Brush opacityBrush = null);
786 	void FillMesh(ID2D1Mesh mesh, ID2D1Brush brush);
787 	void FillOpacityMask(ID2D1Bitmap opacityMask, ID2D1Brush brush, D2D1_OPACITY_MASK_CONTENT content, const D2D1_RECT_F *destinationRectangle = null, const D2D1_RECT_F *sourceRectangle = null);
788 	void FillRectangle(const D2D1_RECT_F *rect, ID2D1Brush brush);
789 	void FillRoundedRectangle(const D2D1_ROUNDED_RECT *roundedRect, ID2D1Brush brush);
790 	HRESULT Flush(D2D1_TAG *tag1 = null, D2D1_TAG *tag2 = null);
791 	D2D1_ANTIALIAS_MODE GetAntialiasMode();
792 	void GetDpi(float *dpiX, float *dpiY);
793 	uint GetMaximumBitmapSize();
794 	D2D1_PIXEL_FORMAT GetPixelFormat();
795 	D2D1_SIZE_U GetPixelSize();
796 	D2D1_SIZE_F GetSize();
797 	void GetTags(D2D1_TAG *tag1 = null, D2D1_TAG *tag2 = null);
798 	D2D1_TEXT_ANTIALIAS_MODE GetTextAntialiasMode();
799 	void GetTextRenderingParams(IDWriteRenderingParams *textRenderingParams);
800 	void GetTransform(D2D1_MATRIX_3X2_F *transform);
801 	BOOL IsSupported(const D2D1_RENDER_TARGET_PROPERTIES *renderTargetProperties);
802 	void PopAxisAlignedClip();
803 	void PopLayer();
804 	void PushAxisAlignedClip(const D2D1_RECT_F *clipRect, D2D1_ANTIALIAS_MODE antialiasMode);
805 	void PushLayer(const D2D1_LAYER_PARAMETERS *layerParameters, ID2D1Layer layer);
806 	void RestoreDrawingState(ID2D1DrawingStateBlock drawingStateBlock);
807 	void SaveDrawingState(ID2D1DrawingStateBlock *drawingStateBlock);
808 	void SetAntialiasMode(D2D1_ANTIALIAS_MODE antialiasMode);
809 	void SetDpi(float dpiX, float dpiY);
810 	void SetTags(D2D1_TAG tag1, D2D1_TAG tag2);
811 	void SetTextAntialiasMode(D2D1_TEXT_ANTIALIAS_MODE textAntialiasMode);
812 	void SetTextRenderingParams(IDWriteRenderingParams textRenderingParams = null);
813 	void SetTransform(const D2D1_MATRIX_3X2_F *transform);
814 }
815 
816 mixin(uuid!(ID2D1Resource, "2cd90691-12e2-11dc-9fed-001143a055f9"));
817 public interface ID2D1Resource : IUnknown
818 {
819 extern(Windows):
820 	void GetFactory(ID2D1Factory *factory);
821 }
822 
823 mixin(uuid!(ID2D1RoundedRectangleGeometry, "2cd906a3-12e2-11dc-9fed-001143a055f9"));
824 public interface ID2D1RoundedRectangleGeometry : ID2D1Geometry
825 {
826 extern(Windows):
827 	void GetRoundedRect(D2D1_ROUNDED_RECT *roundedRect);
828 }
829 
830 mixin(uuid!(ID2D1SimplifiedGeometrySink, "2cd9069e-12e2-11dc-9fed-001143a055f9"));
831 public interface ID2D1SimplifiedGeometrySink : IUnknown
832 {
833 extern(Windows):
834 	void AddBeziers(const D2D1_BEZIER_SEGMENT* Beziers, uint Count);
835 	void AddLines(const D2D_POINT_2F* Points, uint Count);
836 	void BeginFigure(D2D1_POINT_2F StartPoint, D2D1_FIGURE_BEGIN FigureBegin);
837 	HRESULT Close();
838 	void EndFigure(D2D1_FIGURE_END FigureEnd);
839 	void SetFillMode(D2D1_FILL_MODE FillMode);
840 	void SetSegmentFlags(D2D1_PATH_SEGMENT VertexFlags);
841 }
842 
843 mixin(uuid!(ID2D1SolidColorBrush, "2cd906a9-12e2-11dc-9fed-001143a055f9"));
844 public interface ID2D1SolidColorBrush : ID2D1Brush
845 {
846 extern(Windows):
847 	D2D1_COLOR_F GetColor();
848 	void SetColor(const D2D1_COLOR_F *color);
849 }
850 
851 mixin(uuid!(ID2D1StrokeStyle, "2cd9069d-12e2-11dc-9fed-001143a055f9"));
852 public interface ID2D1StrokeStyle : ID2D1Resource
853 {
854 extern(Windows):
855 	D2D1_CAP_STYLE GetDashCap();
856 	void GetDashes(float *dashes, uint dashesCount);
857 	uint GetDashesCount();
858 	float GetDashOffset();
859 	D2D1_DASH_STYLE GetDashStyle();
860 	D2D1_CAP_STYLE GetEndCap();
861 	D2D1_LINE_JOIN GetLineJoin();
862 	float GetMiterLimit();
863 	D2D1_CAP_STYLE GetStartCap();
864 }
865 
866 mixin(uuid!(ID2D1TessellationSink, "2cd906c1-12e2-11dc-9fed-001143a055f9"));
867 public interface ID2D1TessellationSink : IUnknown
868 {
869 extern(Windows):
870 	void AddTriangles(const D2D1_TRIANGLE *triangles, uint trianglesCount);
871 	HRESULT Close();
872 }
873 
874 mixin(uuid!(ID2D1TransformedGeometry, "2cd906bb-12e2-11dc-9fed-001143a055f9"));
875 public interface ID2D1TransformedGeometry : ID2D1Geometry
876 {
877 extern(Windows):
878 	void GetSourceGeometry(ID2D1Geometry *sourceGeometry);
879 	void GetTransform(D2D1_MATRIX_3X2_F *transform);
880 }
881 
882 //
883 //	Functions
884 //
885 
886 extern(Windows)
887 {
888 	HRESULT D2D1CreateFactory(D2D1_FACTORY_TYPE factoryType, GUID* riid, void **ppIFactory);
889 	HRESULT D2D1CreateFactory(D2D1_FACTORY_TYPE factoryType, GUID* riid, const D2D1_FACTORY_OPTIONS *pFactoryOptions, void **ppIFactory);
890 	BOOL D2D1InvertMatrix(D2D1_MATRIX_3X2_F *matrix);
891 	BOOL D2D1IsMatrixInvertible(const D2D1_MATRIX_3X2_F *matrix);
892 	void D2D1MakeRotateMatrix(float angle, D2D1_POINT_2F center, D2D1_MATRIX_3X2_F *matrix);
893 	void D2D1MakeSkewMatrix(float angleX, float angleY, D2D1_POINT_2F center, D2D1_MATRIX_3X2_F *matrix);
894 }