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 }