d2d1.h (152087B) - Raw
1 /** 2 * This file has no copyright assigned and is placed in the Public Domain. 3 * This file is part of the mingw-w64 runtime package. 4 * No warranty is given; refer to the file DISCLAIMER.PD within this package. 5 6 * d2d1.h - Header file for the Direct2D API 7 * No original Microsoft headers were used in the creation of this 8 * file. 9 *API docs available at: http://msdn.microsoft.com/en-us/library/dd372349%28v=VS.85%29.aspx 10 */ 11 12 #ifndef _D2D1_H 13 #define _D2D1_H 14 15 #include <unknwn.h> 16 #include <dcommon.h> 17 #include <dxgiformat.h> 18 #include <d3d10_1.h> 19 #include <d2dbasetypes.h> 20 #include <d2derr.h> 21 22 #ifndef _COM_interface 23 #define _COM_interface struct 24 #endif 25 26 typedef UINT64 D2D1_TAG; 27 28 #if !defined(D2D_USE_C_DEFINITIONS) && !defined(__cplusplus) 29 #define D2D_USE_C_DEFINITIONS 30 #endif 31 32 #ifndef __IWICBitmapSource_FWD_DEFINED__ 33 #define __IWICBitmapSource_FWD_DEFINED__ 34 typedef interface IWICBitmapSource IWICBitmapSource; 35 #endif 36 37 #ifndef __IWICBitmap_FWD_DEFINED__ 38 #define __IWICBitmap_FWD_DEFINED__ 39 typedef interface IWICBitmap IWICBitmap; 40 #endif 41 42 typedef struct DWRITE_GLYPH_RUN DWRITE_GLYPH_RUN; 43 44 #define D2D1_INVALID_TAG ULONGLONG_MAX 45 #define D2D1_DEFAULT_FLATTENING_TOLERANCE (0.25f) 46 47 #ifndef __IDWriteRenderingParams_FWD_DEFINED__ 48 #define __IDWriteRenderingParams_FWD_DEFINED__ 49 typedef struct IDWriteRenderingParams IDWriteRenderingParams; 50 #endif 51 52 #ifndef __IDXGISurface_FWD_DEFINED__ 53 #define __IDXGISurface_FWD_DEFINED__ 54 typedef struct IDXGISurface IDXGISurface; 55 #endif 56 57 #ifndef __IDWriteTextFormat_FWD_DEFINED__ 58 #define __IDWriteTextFormat_FWD_DEFINED__ 59 typedef struct IDWriteTextFormat IDWriteTextFormat; 60 #endif 61 62 #ifndef __IDWriteTextLayout_FWD_DEFINED__ 63 #define __IDWriteTextLayout_FWD_DEFINED__ 64 typedef struct IDWriteTextLayout IDWriteTextLayout; 65 #endif 66 67 #ifndef __IDWriteFontFace_FWD_DEFINED__ 68 #define __IDWriteFontFace_FWD_DEFINED__ 69 typedef struct IDWriteFontFace IDWriteFontFace; 70 #endif 71 72 typedef enum D2D1_ANTIALIAS_MODE { 73 D2D1_ANTIALIAS_MODE_PER_PRIMITIVE = 0, 74 D2D1_ANTIALIAS_MODE_ALIASED = 1, 75 D2D1_ANTIALIAS_MODE_FORCE_DWORD = 0xffffffff 76 } D2D1_ANTIALIAS_MODE; 77 78 typedef enum D2D1_ARC_SIZE { 79 D2D1_ARC_SIZE_SMALL = 0, 80 D2D1_ARC_SIZE_LARGE = 1, 81 D2D1_ARC_SIZE_FORCE_DWORD = 0xffffffff 82 } D2D1_ARC_SIZE; 83 84 enum { 85 D2D1_INTERPOLATION_MODE_DEFINITION_NEAREST_NEIGHBOR = 0, 86 D2D1_INTERPOLATION_MODE_DEFINITION_LINEAR = 1, 87 D2D1_INTERPOLATION_MODE_DEFINITION_CUBIC = 2, 88 D2D1_INTERPOLATION_MODE_DEFINITION_MULTI_SAMPLE_LINEAR = 3, 89 D2D1_INTERPOLATION_MODE_DEFINITION_ANISOTROPIC = 4, 90 D2D1_INTERPOLATION_MODE_DEFINITION_HIGH_QUALITY_CUBIC = 5, 91 D2D1_INTERPOLATION_MODE_DEFINITION_FANT = 6, 92 D2D1_INTERPOLATION_MODE_DEFINITION_MIPMAP_LINEAR = 7 93 }; 94 95 typedef enum D2D1_BITMAP_INTERPOLATION_MODE { 96 D2D1_BITMAP_INTERPOLATION_MODE_NEAREST_NEIGHBOR = 0, 97 D2D1_BITMAP_INTERPOLATION_MODE_LINEAR = 1, 98 D2D1_BITMAP_INTERPOLATION_MODE_FORCE_DWORD = 0xffffffff 99 } D2D1_BITMAP_INTERPOLATION_MODE; 100 101 typedef enum D2D1_CAP_STYLE { 102 D2D1_CAP_STYLE_FLAT = 0, 103 D2D1_CAP_STYLE_SQUARE = 1, 104 D2D1_CAP_STYLE_ROUND = 2, 105 D2D1_CAP_STYLE_TRIANGLE = 3, 106 D2D1_CAP_STYLE_FORCE_DWORD = 0xffffffff 107 } D2D1_CAP_STYLE; 108 109 typedef enum D2D1_COMBINE_MODE { 110 D2D1_COMBINE_MODE_UNION = 0, 111 D2D1_COMBINE_MODE_INTERSECT = 1, 112 D2D1_COMBINE_MODE_XOR = 2, 113 D2D1_COMBINE_MODE_EXCLUDE = 3, 114 D2D1_COMBINE_MODE_FORCE_DWORD = 0xffffffff 115 } D2D1_COMBINE_MODE; 116 117 typedef enum D2D1_COMPATIBLE_RENDER_TARGET_OPTIONS { 118 D2D1_COMPATIBLE_RENDER_TARGET_OPTIONS_NONE = 0x00000000, 119 D2D1_COMPATIBLE_RENDER_TARGET_OPTIONS_GDI_COMPATIBLE = 0x00000001, 120 D2D1_COMPATIBLE_RENDER_TARGET_OPTIONS_FORCE_DWORD = 0xffffffff 121 } D2D1_COMPATIBLE_RENDER_TARGET_OPTIONS; 122 123 DEFINE_ENUM_FLAG_OPERATORS(D2D1_COMPATIBLE_RENDER_TARGET_OPTIONS); 124 125 typedef enum D2D1_DASH_STYLE { 126 D2D1_DASH_STYLE_SOLID = 0, 127 D2D1_DASH_STYLE_DASH = 1, 128 D2D1_DASH_STYLE_DOT = 2, 129 D2D1_DASH_STYLE_DASH_DOT = 3, 130 D2D1_DASH_STYLE_DASH_DOT_DOT = 4, 131 D2D1_DASH_STYLE_CUSTOM = 5, 132 D2D1_DASH_STYLE_FORCE_DWORD = 0xffffffff 133 } D2D1_DASH_STYLE; 134 135 typedef enum D2D1_DC_INITIALIZE_MODE { 136 D2D1_DC_INITIALIZE_MODE_COPY = 0, 137 D2D1_DC_INITIALIZE_MODE_CLEAR = 1, 138 D2D1_DC_INITIALIZE_MODE_FORCE_DWORD = 0xffffffff 139 } D2D1_DC_INITIALIZE_MODE; 140 141 typedef enum D2D1_DEBUG_LEVEL { 142 D2D1_DEBUG_LEVEL_NONE = 0, 143 D2D1_DEBUG_LEVEL_ERROR = 1, 144 D2D1_DEBUG_LEVEL_WARNING = 2, 145 D2D1_DEBUG_LEVEL_INFORMATION = 3, 146 D2D1_DEBUG_LEVEL_FORCE_DWORD = 0xffffffff 147 } D2D1_DEBUG_LEVEL; 148 149 typedef enum D2D1_DRAW_TEXT_OPTIONS { 150 D2D1_DRAW_TEXT_OPTIONS_NO_SNAP = 0x00000001, 151 D2D1_DRAW_TEXT_OPTIONS_CLIP = 0x00000002, 152 D2D1_DRAW_TEXT_OPTIONS_ENABLE_COLOR_FONT = 0x00000004, 153 D2D1_DRAW_TEXT_OPTIONS_DISABLE_COLOR_BITMAP_SNAPPING = 0x00000008, 154 D2D1_DRAW_TEXT_OPTIONS_NONE = 0x00000000, 155 D2D1_DRAW_TEXT_OPTIONS_FORCE_DWORD = 0xffffffff 156 } D2D1_DRAW_TEXT_OPTIONS; 157 158 DEFINE_ENUM_FLAG_OPERATORS(D2D1_DRAW_TEXT_OPTIONS); 159 160 typedef enum D2D1_EXTEND_MODE { 161 D2D1_EXTEND_MODE_CLAMP = 0, 162 D2D1_EXTEND_MODE_WRAP = 1, 163 D2D1_EXTEND_MODE_MIRROR = 2, 164 D2D1_EXTEND_MODE_FORCE_DWORD = 0xffffffff 165 } D2D1_EXTEND_MODE; 166 167 typedef enum D2D1_FACTORY_TYPE { 168 D2D1_FACTORY_TYPE_SINGLE_THREADED = 0, 169 D2D1_FACTORY_TYPE_MULTI_THREADED = 1, 170 D2D1_FACTORY_TYPE_FORCE_DWORD = 0xffffffff 171 } D2D1_FACTORY_TYPE; 172 173 typedef enum D2D1_FEATURE_LEVEL { 174 D2D1_FEATURE_LEVEL_DEFAULT = 0, 175 D2D1_FEATURE_LEVEL_9 = D3D10_FEATURE_LEVEL_9_1, 176 D2D1_FEATURE_LEVEL_10 = D3D10_FEATURE_LEVEL_10_0, 177 D2D1_FEATURE_LEVEL_FORCE_DWORD = 0xffffffff 178 } D2D1_FEATURE_LEVEL; 179 180 typedef enum D2D1_FIGURE_BEGIN { 181 D2D1_FIGURE_BEGIN_FILLED = 0, 182 D2D1_FIGURE_BEGIN_HOLLOW = 1, 183 D2D1_FIGURE_BEGIN_FORCE_DWORD = 0xffffffff 184 } D2D1_FIGURE_BEGIN; 185 186 typedef enum D2D1_FIGURE_END { 187 D2D1_FIGURE_END_OPEN = 0, 188 D2D1_FIGURE_END_CLOSED = 1, 189 D2D1_FIGURE_END_FORCE_DWORD = 0xffffffff 190 } D2D1_FIGURE_END; 191 192 typedef enum D2D1_FILL_MODE { 193 D2D1_FILL_MODE_ALTERNATE = 0, 194 D2D1_FILL_MODE_WINDING = 1, 195 D2D1_FILL_MODE_FORCE_DWORD = 0xffffffff 196 } D2D1_FILL_MODE; 197 198 typedef enum D2D1_GAMMA { 199 D2D1_GAMMA_2_2 = 0, 200 D2D1_GAMMA_1_0 = 1, 201 D2D1_GAMMA_FORCE_DWORD = 0xffffffff 202 } D2D1_GAMMA; 203 204 typedef enum D2D1_GEOMETRY_RELATION { 205 D2D1_GEOMETRY_RELATION_UNKNOWN = 0, 206 D2D1_GEOMETRY_RELATION_DISJOINT = 1, 207 D2D1_GEOMETRY_RELATION_IS_CONTAINED = 2, 208 D2D1_GEOMETRY_RELATION_CONTAINS = 3, 209 D2D1_GEOMETRY_RELATION_OVERLAP = 4, 210 D2D1_GEOMETRY_RELATION_FORCE_DWORD = 0xffffffff 211 } D2D1_GEOMETRY_RELATION; 212 213 typedef enum D2D1_GEOMETRY_SIMPLIFICATION_OPTION { 214 D2D1_GEOMETRY_SIMPLIFICATION_OPTION_CUBICS_AND_LINES = 0, 215 D2D1_GEOMETRY_SIMPLIFICATION_OPTION_LINES = 1, 216 D2D1_GEOMETRY_SIMPLIFICATION_OPTION_FORCE_DWORD = 0xffffffff 217 } D2D1_GEOMETRY_SIMPLIFICATION_OPTION; 218 219 typedef enum D2D1_LAYER_OPTIONS { 220 D2D1_LAYER_OPTIONS_NONE = 0x00000000, 221 D2D1_LAYER_OPTIONS_INITIALIZE_FOR_CLEARTYPE = 0x00000001, 222 D2D1_LAYER_OPTIONS_FORCE_DWORD = 0xffffffff 223 } D2D1_LAYER_OPTIONS; 224 225 DEFINE_ENUM_FLAG_OPERATORS(D2D1_LAYER_OPTIONS); 226 227 typedef enum D2D1_LINE_JOIN { 228 D2D1_LINE_JOIN_MITER = 0, 229 D2D1_LINE_JOIN_BEVEL = 1, 230 D2D1_LINE_JOIN_ROUND = 2, 231 D2D1_LINE_JOIN_MITER_OR_BEVEL = 3, 232 D2D1_LINE_JOIN_FORCE_DWORD = 0xffffffff 233 } D2D1_LINE_JOIN; 234 235 typedef enum D2D1_OPACITY_MASK_CONTENT { 236 D2D1_OPACITY_MASK_CONTENT_GRAPHICS = 0, 237 D2D1_OPACITY_MASK_CONTENT_TEXT_NATURAL = 1, 238 D2D1_OPACITY_MASK_CONTENT_TEXT_GDI_COMPATIBLE = 2, 239 D2D1_OPACITY_MASK_CONTENT_FORCE_DWORD = 0xffffffff 240 } D2D1_OPACITY_MASK_CONTENT; 241 242 typedef enum D2D1_PATH_SEGMENT { 243 D2D1_PATH_SEGMENT_NONE = 0x00000000, 244 D2D1_PATH_SEGMENT_FORCE_UNSTROKED = 0x00000001, 245 D2D1_PATH_SEGMENT_FORCE_ROUND_LINE_JOIN = 0x00000002, 246 D2D1_PATH_SEGMENT_FORCE_DWORD = 0xffffffff 247 } D2D1_PATH_SEGMENT; 248 249 DEFINE_ENUM_FLAG_OPERATORS(D2D1_PATH_SEGMENT); 250 251 typedef enum D2D1_PRESENT_OPTIONS { 252 D2D1_PRESENT_OPTIONS_NONE = 0x00000000, 253 D2D1_PRESENT_OPTIONS_RETAIN_CONTENTS = 0x00000001, 254 D2D1_PRESENT_OPTIONS_IMMEDIATELY = 0x00000002, 255 D2D1_PRESENT_OPTIONS_FORCE_DWORD = 0xffffffff 256 } D2D1_PRESENT_OPTIONS; 257 258 DEFINE_ENUM_FLAG_OPERATORS(D2D1_PRESENT_OPTIONS); 259 260 typedef enum D2D1_RENDER_TARGET_TYPE { 261 D2D1_RENDER_TARGET_TYPE_DEFAULT = 0, 262 D2D1_RENDER_TARGET_TYPE_SOFTWARE = 1, 263 D2D1_RENDER_TARGET_TYPE_HARDWARE = 2, 264 D2D1_RENDER_TARGET_TYPE_FORCE_DWORD = 0xffffffff 265 } D2D1_RENDER_TARGET_TYPE; 266 267 typedef enum D2D1_RENDER_TARGET_USAGE { 268 D2D1_RENDER_TARGET_USAGE_NONE = 0x00000000, 269 D2D1_RENDER_TARGET_USAGE_FORCE_BITMAP_REMOTING = 0x00000001, 270 D2D1_RENDER_TARGET_USAGE_GDI_COMPATIBLE = 0x00000002, 271 D2D1_RENDER_TARGET_USAGE_FORCE_DWORD = 0xffffffff 272 } D2D1_RENDER_TARGET_USAGE; 273 274 DEFINE_ENUM_FLAG_OPERATORS(D2D1_RENDER_TARGET_USAGE); 275 276 typedef enum D2D1_SWEEP_DIRECTION { 277 D2D1_SWEEP_DIRECTION_COUNTER_CLOCKWISE = 0, 278 D2D1_SWEEP_DIRECTION_CLOCKWISE = 1, 279 D2D1_SWEEP_DIRECTION_FORCE_DWORD = 0xffffffff 280 } D2D1_SWEEP_DIRECTION; 281 282 typedef enum D2D1_TEXT_ANTIALIAS_MODE { 283 D2D1_TEXT_ANTIALIAS_MODE_DEFAULT = 0, 284 D2D1_TEXT_ANTIALIAS_MODE_CLEARTYPE = 1, 285 D2D1_TEXT_ANTIALIAS_MODE_GRAYSCALE = 2, 286 D2D1_TEXT_ANTIALIAS_MODE_ALIASED = 3, 287 D2D1_TEXT_ANTIALIAS_MODE_FORCE_DWORD = 0xffffffff 288 } D2D1_TEXT_ANTIALIAS_MODE; 289 290 typedef enum D2D1_WINDOW_STATE { 291 D2D1_WINDOW_STATE_NONE = 0x00000000, 292 D2D1_WINDOW_STATE_OCCLUDED = 0x00000001, 293 D2D1_WINDOW_STATE_FORCE_DWORD = 0xffffffff 294 } D2D1_WINDOW_STATE; 295 296 DEFINE_ENUM_FLAG_OPERATORS(D2D1_WINDOW_STATE); 297 298 /* this is a hack so we can use forward declares in C (easier than reordering interfaces) */ 299 #if !defined(__cplusplus) 300 #undef DECLARE_INTERFACE 301 #define DECLARE_INTERFACE(iface) struct iface { struct iface##Vtbl *lpVtbl; }; typedef struct iface##Vtbl iface##Vtbl; struct iface##Vtbl 302 #endif 303 304 /* interface forward declares */ 305 306 typedef _COM_interface ID2D1Bitmap ID2D1Bitmap; 307 typedef _COM_interface ID2D1BitmapBrush ID2D1BitmapBrush; 308 typedef _COM_interface ID2D1BitmapRenderTarget ID2D1BitmapRenderTarget; 309 typedef _COM_interface ID2D1Brush ID2D1Brush; 310 typedef _COM_interface ID2D1DCRenderTarget ID2D1DCRenderTarget; 311 typedef _COM_interface ID2D1DrawingStateBlock ID2D1DrawingStateBlock; 312 typedef _COM_interface ID2D1EllipseGeometry ID2D1EllipseGeometry; 313 typedef _COM_interface ID2D1Factory ID2D1Factory; 314 typedef _COM_interface ID2D1GdiInteropRenderTarget ID2D1GdiInteropRenderTarget; 315 typedef _COM_interface ID2D1Geometry ID2D1Geometry; 316 typedef _COM_interface ID2D1GeometryGroup ID2D1GeometryGroup; 317 typedef _COM_interface ID2D1GeometrySink ID2D1GeometrySink; 318 typedef _COM_interface ID2D1GradientStopCollection ID2D1GradientStopCollection; 319 typedef _COM_interface ID2D1HwndRenderTarget ID2D1HwndRenderTarget; 320 typedef _COM_interface ID2D1Layer ID2D1Layer; 321 typedef _COM_interface ID2D1LinearGradientBrush ID2D1LinearGradientBrush; 322 typedef _COM_interface ID2D1Mesh ID2D1Mesh; 323 typedef _COM_interface ID2D1PathGeometry ID2D1PathGeometry; 324 typedef _COM_interface ID2D1RadialGradientBrush ID2D1RadialGradientBrush; 325 typedef _COM_interface ID2D1RectangleGeometry ID2D1RectangleGeometry; 326 typedef _COM_interface ID2D1RenderTarget ID2D1RenderTarget; 327 typedef _COM_interface ID2D1Resource ID2D1Resource; 328 typedef _COM_interface ID2D1RoundedRectangleGeometry ID2D1RoundedRectangleGeometry; 329 typedef _COM_interface ID2D1SimplifiedGeometrySink ID2D1SimplifiedGeometrySink; 330 typedef _COM_interface ID2D1SolidColorBrush ID2D1SolidColorBrush; 331 typedef _COM_interface ID2D1StrokeStyle ID2D1StrokeStyle; 332 typedef _COM_interface ID2D1TessellationSink ID2D1TessellationSink; 333 typedef _COM_interface ID2D1TransformedGeometry ID2D1TransformedGeometry; 334 335 /* structures */ 336 337 typedef struct D2D_MATRIX_3X2_F D2D1_MATRIX_3X2_F; 338 339 typedef struct D2D1_ARC_SEGMENT D2D1_ARC_SEGMENT; 340 typedef struct D2D1_BEZIER_SEGMENT D2D1_BEZIER_SEGMENT; 341 typedef struct D2D1_BITMAP_BRUSH_PROPERTIES D2D1_BITMAP_BRUSH_PROPERTIES; 342 typedef struct D2D1_BITMAP_PROPERTIES D2D1_BITMAP_PROPERTIES; 343 typedef struct D2D1_BRUSH_PROPERTIES D2D1_BRUSH_PROPERTIES; 344 typedef struct D2D1_DRAWING_STATE_DESCRIPTION D2D1_DRAWING_STATE_DESCRIPTION; 345 typedef struct D2D1_ELLIPSE D2D1_ELLIPSE; 346 typedef struct D2D1_FACTORY_OPTIONS D2D1_FACTORY_OPTIONS; 347 typedef struct D2D1_GRADIENT_STOP D2D1_GRADIENT_STOP; 348 typedef struct D2D1_HWND_RENDER_TARGET_PROPERTIES D2D1_HWND_RENDER_TARGET_PROPERTIES; 349 typedef struct D2D1_LAYER_PARAMETERS D2D1_LAYER_PARAMETERS; 350 typedef struct D2D1_LINEAR_GRADIENT_BRUSH_PROPERTIES D2D1_LINEAR_GRADIENT_BRUSH_PROPERTIES; 351 typedef struct D2D1_QUADRATIC_BEZIER_SEGMENT D2D1_QUADRATIC_BEZIER_SEGMENT; 352 typedef struct D2D1_RADIAL_GRADIENT_BRUSH_PROPERTIES D2D1_RADIAL_GRADIENT_BRUSH_PROPERTIES; 353 typedef struct D2D1_RENDER_TARGET_PROPERTIES D2D1_RENDER_TARGET_PROPERTIES; 354 typedef struct D2D1_ROUNDED_RECT D2D1_ROUNDED_RECT; 355 typedef struct D2D1_STROKE_STYLE_PROPERTIES D2D1_STROKE_STYLE_PROPERTIES; 356 typedef struct D2D1_TRIANGLE D2D1_TRIANGLE; 357 358 typedef D2D_MATRIX_3X2_F D2D1_MATRIX_3X2_F; 359 typedef D2D_RECT_F D2D1_RECT_F; 360 typedef D2D_SIZE_F D2D1_SIZE_F; 361 typedef UINT64 D2D1_TAG; 362 typedef D2D_POINT_2U D2D1_POINT_2U; 363 typedef D2D_RECT_U D2D1_RECT_U; 364 typedef D2D_COLOR_F D2D1_COLOR_F; 365 366 struct D2D1_ARC_SEGMENT { 367 D2D1_POINT_2F point; 368 D2D1_SIZE_F size; 369 FLOAT rotationAngle; 370 D2D1_SWEEP_DIRECTION sweepDirection; 371 D2D1_ARC_SIZE arcSize; 372 }; 373 374 struct D2D1_BEZIER_SEGMENT { 375 D2D1_POINT_2F point1; 376 D2D1_POINT_2F point2; 377 D2D1_POINT_2F point3; 378 }; 379 380 struct D2D1_BITMAP_BRUSH_PROPERTIES { 381 D2D1_EXTEND_MODE extendModeX; 382 D2D1_EXTEND_MODE extendModeY; 383 D2D1_BITMAP_INTERPOLATION_MODE interpolationMode; 384 }; 385 386 struct D2D1_BITMAP_PROPERTIES { 387 D2D1_PIXEL_FORMAT pixelFormat; 388 FLOAT dpiX; 389 FLOAT dpiY; 390 }; 391 392 struct D2D1_BRUSH_PROPERTIES { 393 FLOAT opacity; 394 D2D1_MATRIX_3X2_F transform; 395 }; 396 397 struct D2D1_DRAWING_STATE_DESCRIPTION { 398 D2D1_ANTIALIAS_MODE antialiasMode; 399 D2D1_TEXT_ANTIALIAS_MODE textAntialiasMode; 400 D2D1_TAG tag1; 401 D2D1_TAG tag2; 402 D2D1_MATRIX_3X2_F transform; 403 }; 404 405 struct D2D1_ELLIPSE { 406 D2D1_POINT_2F point; 407 FLOAT radiusX; 408 FLOAT radiusY; 409 }; 410 411 struct D2D1_FACTORY_OPTIONS { 412 D2D1_DEBUG_LEVEL debugLevel; 413 }; 414 415 struct D2D1_GRADIENT_STOP { 416 FLOAT position; 417 D2D1_COLOR_F color; 418 }; 419 420 struct D2D1_HWND_RENDER_TARGET_PROPERTIES { 421 HWND hwnd; 422 D2D1_SIZE_U pixelSize; 423 D2D1_PRESENT_OPTIONS presentOptions; 424 }; 425 426 struct D2D1_LAYER_PARAMETERS { 427 D2D1_RECT_F contentBounds; 428 ID2D1Geometry *geometricMask; 429 D2D1_ANTIALIAS_MODE maskAntialiasMode; 430 D2D1_MATRIX_3X2_F maskTransform; 431 FLOAT opacity; 432 ID2D1Brush *opacityBrush; 433 D2D1_LAYER_OPTIONS layerOptions; 434 }; 435 436 struct D2D1_LINEAR_GRADIENT_BRUSH_PROPERTIES { 437 D2D1_POINT_2F startPoint; 438 D2D1_POINT_2F endPoint; 439 }; 440 441 struct D2D1_QUADRATIC_BEZIER_SEGMENT { 442 D2D1_POINT_2F point1; 443 D2D1_POINT_2F point2; 444 }; 445 446 struct D2D1_RADIAL_GRADIENT_BRUSH_PROPERTIES { 447 D2D1_POINT_2F center; 448 D2D1_POINT_2F gradientOriginOffset; 449 FLOAT radiusX; 450 FLOAT radiusY; 451 }; 452 453 struct D2D1_RENDER_TARGET_PROPERTIES { 454 D2D1_RENDER_TARGET_TYPE type; 455 D2D1_PIXEL_FORMAT pixelFormat; 456 FLOAT dpiX; 457 FLOAT dpiY; 458 D2D1_RENDER_TARGET_USAGE usage; 459 D2D1_FEATURE_LEVEL minLevel; 460 }; 461 462 struct D2D1_ROUNDED_RECT { 463 D2D1_RECT_F rect; 464 FLOAT radiusX; 465 FLOAT radiusY; 466 }; 467 468 struct D2D1_STROKE_STYLE_PROPERTIES { 469 D2D1_CAP_STYLE startCap; 470 D2D1_CAP_STYLE endCap; 471 D2D1_CAP_STYLE dashCap; 472 D2D1_LINE_JOIN lineJoin; 473 FLOAT miterLimit; 474 D2D1_DASH_STYLE dashStyle; 475 FLOAT dashOffset; 476 }; 477 478 struct D2D1_TRIANGLE { 479 D2D1_POINT_2F point1; 480 D2D1_POINT_2F point2; 481 D2D1_POINT_2F point3; 482 }; 483 484 /* interfaces */ 485 486 /** 487 * Header generated from msdn for the purposes of allowing 488 * 3rd party compiler compatibility with the Microsoft API 489 */ 490 DEFINE_GUID(IID_ID2D1Resource, 0x2cd90691,0x12e2,0x11dc,0x9f,0xed,0x00,0x11,0x43,0xa0,0x55,0xf9); 491 492 #ifndef D2D_USE_C_DEFINITIONS 493 494 interface ID2D1Resource : public IUnknown { 495 STDMETHOD_(void, GetFactory)(ID2D1Factory **factory) const PURE; 496 }; 497 498 #else 499 500 typedef struct ID2D1ResourceVtbl { 501 IUnknownVtbl Base; 502 503 STDMETHOD_(void, GetFactory)(ID2D1Resource *This, ID2D1Factory **factory) PURE; 504 } ID2D1ResourceVtbl; 505 506 interface ID2D1Resource { 507 const ID2D1ResourceVtbl *lpVtbl; 508 }; 509 510 #define ID2D1Resource_QueryInterface(this,A,B) (this)->lpVtbl->Base.QueryInterface((IUnknown*)(this),A,B) 511 #define ID2D1Resource_AddRef(this) (this)->lpVtbl->Base.AddRef((IUnknown*)(this)) 512 #define ID2D1Resource_Release(this) (this)->lpVtbl->Base.Release((IUnknown*)(this)) 513 #define ID2D1Resource_GetFactory(this,A) (this)->lpVtbl->GetFactory(this,A) 514 515 #endif 516 517 DEFINE_GUID(IID_ID2D1Brush, 0x2cd906a8,0x12e2,0x11dc,0x9f,0xed,0x00,0x11,0x43,0xa0,0x55,0xf9); 518 519 #ifndef D2D_USE_C_DEFINITIONS 520 521 interface ID2D1Brush : public ID2D1Resource { 522 STDMETHOD_(void, SetOpacity)(FLOAT opacity) PURE; 523 STDMETHOD_(void, SetTransform)(const D2D1_MATRIX_3X2_F *transform) PURE; 524 STDMETHOD_(FLOAT, GetOpacity)(void) const PURE; 525 STDMETHOD_(void, GetTransform)(D2D1_MATRIX_3X2_F *transform) const PURE; 526 527 void SetTransform(const D2D1_MATRIX_3X2_F &transform) { 528 SetTransform(&transform); 529 } 530 }; 531 532 #else 533 534 typedef struct ID2D1BrushVtbl { 535 ID2D1ResourceVtbl Base; 536 537 STDMETHOD_(void, SetOpacity)(ID2D1Brush *This, FLOAT opacity) PURE; 538 STDMETHOD_(void, SetTransform)(ID2D1Brush *This, const D2D1_MATRIX_3X2_F *transform) PURE; 539 STDMETHOD_(FLOAT, GetOpacity)(ID2D1Brush *This) PURE; 540 STDMETHOD_(void, GetTransform)(ID2D1Brush *This, D2D1_MATRIX_3X2_F *transform) PURE; 541 } ID2D1BrushVtbl; 542 543 interface ID2D1Brush { 544 const ID2D1BrushVtbl *lpVtbl; 545 }; 546 547 #define ID2D1Brush_QueryInterface(this,A,B) (this)->lpVtbl->Base.Base.QueryInterface((IUnknown*)(this),A,B) 548 #define ID2D1Brush_AddRef(this) (this)->lpVtbl->Base.Base.AddRef((IUnknown*)(this)) 549 #define ID2D1Brush_Release(this) (this)->lpVtbl->Base.Base.Release((IUnknown*)(this)) 550 #define ID2D1Brush_GetFactory(this,A) (this)->lpVtbl->Base.GetFactory((ID2D1Resource*)(this),A) 551 #define ID2D1Brush_SetOpacity(this,A) (this)->lpVtbl->SetOpacity(this,A) 552 #define ID2D1Brush_SetTransform(this,A) (this)->lpVtbl->SetTransform(this,A) 553 #define ID2D1Brush_GetOpacity(this) (this)->lpVtbl->GetOpacity(this) 554 #define ID2D1Brush_GetTransform(this,A) (this)->lpVtbl->GetTransform(this,A) 555 556 #endif 557 558 DEFINE_GUID(IID_ID2D1Image, 0x65019f75,0x8da2,0x497c,0xb3,0x2c,0xdf,0xa3,0x4e,0x48,0xed,0xe6); 559 560 #ifndef D2D_USE_C_DEFINITIONS 561 562 interface ID2D1Image : public ID2D1Resource {}; 563 564 #else 565 566 typedef struct ID2D1ImageVtbl { 567 ID2D1ResourceVtbl Base; 568 } ID2D1ImageVtbl; 569 570 interface ID2D1Image { 571 const ID2D1ImageVtbl *lpVtbl; 572 }; 573 574 #define ID2D1Image_QueryInterface(this,A,B) (this)->lpVtbl->Base.Base.QueryInterface((IUnkwnown*)(this),A,B) 575 #define ID2D1Image_AddRef(this) (this)->lpVtbl->Base.Base.AddRef((IUnknown*)(this)) 576 #define ID2D1Image_Release(this) (this)->lpVtbl->Base.Base.Release((IUnknown*)(this)) 577 #define ID2D1Image_GetFactory(this,A) (this)->lpVtbl->Base.GetFactory((ID2D1Resource*)(this),A) 578 579 #endif 580 581 DEFINE_GUID(IID_ID2D1Bitmap, 0xa2296057,0xea42,0x4099,0x98,0x3b,0x53,0x9f,0xb6,0x50,0x54,0x26); 582 583 #ifndef D2D_USE_C_DEFINITIONS 584 585 interface ID2D1Bitmap : public ID2D1Image { 586 #ifndef WIDL_EXPLICIT_AGGREGATE_RETURNS 587 STDMETHOD_(D2D1_SIZE_F, GetSize)(void) const PURE; 588 #else 589 virtual D2D1_SIZE_F* STDMETHODCALLTYPE GetSize(D2D1_SIZE_F*) const = 0; 590 D2D1_SIZE_F STDMETHODCALLTYPE GetSize() const { 591 D2D1_SIZE_F __ret; 592 GetSize(&__ret); 593 return __ret; 594 } 595 #endif 596 597 #ifndef WIDL_EXPLICIT_AGGREGATE_RETURNS 598 STDMETHOD_(D2D1_SIZE_U, GetPixelSize)(void) const PURE; 599 #else 600 virtual D2D1_SIZE_U* STDMETHODCALLTYPE GetPixelSize(D2D1_SIZE_U*) const = 0; 601 D2D1_SIZE_U STDMETHODCALLTYPE GetPixelSize() const { 602 D2D1_SIZE_U __ret; 603 GetPixelSize(&__ret); 604 return __ret; 605 } 606 #endif 607 608 #ifndef WIDL_EXPLICIT_AGGREGATE_RETURNS 609 STDMETHOD_(D2D1_PIXEL_FORMAT, GetPixelFormat)(void) const PURE; 610 #else 611 virtual D2D1_PIXEL_FORMAT* STDMETHODCALLTYPE GetPixelFormat(D2D1_PIXEL_FORMAT*) const = 0; 612 D2D1_PIXEL_FORMAT STDMETHODCALLTYPE GetPixelFormat() const { 613 D2D1_PIXEL_FORMAT __ret; 614 GetPixelFormat(&__ret); 615 return __ret; 616 } 617 #endif 618 619 STDMETHOD_(void, GetDpi)(FLOAT *dpiX, FLOAT *dpiY) const PURE; 620 STDMETHOD(CopyFromBitmap)(const D2D1_POINT_2U *destPoint, ID2D1Bitmap *bitmap, const D2D1_RECT_U *srcRect) PURE; 621 STDMETHOD(CopyFromRenderTarget)(const D2D1_POINT_2U *destPoint, ID2D1RenderTarget *renderTarget, const D2D1_RECT_U *srcRect) PURE; 622 STDMETHOD(CopyFromMemory)(const D2D1_RECT_U *dstRect, const void *srcData, UINT32 pitch) PURE; 623 }; 624 625 #else 626 627 typedef struct ID2D1BitmapVtbl { 628 ID2D1ImageVtbl Base; 629 630 STDMETHOD_(D2D1_SIZE_F, GetSize)(ID2D1Bitmap *This) PURE; 631 STDMETHOD_(D2D1_SIZE_U, GetPixelSize)(ID2D1Bitmap *This) PURE; 632 STDMETHOD_(D2D1_PIXEL_FORMAT, GetPixelFormat)(ID2D1Bitmap *This) PURE; 633 STDMETHOD_(void, GetDpi)(ID2D1Bitmap *This, FLOAT *dpiX, FLOAT *dpiY) PURE; 634 STDMETHOD(CopyFromBitmap)(ID2D1Bitmap *This, const D2D1_POINT_2U *destPoint, ID2D1Bitmap *bitmap, const D2D1_RECT_U *srcRect) PURE; 635 STDMETHOD(CopyFromRenderTarget)(ID2D1Bitmap *This, const D2D1_POINT_2U *destPoint, ID2D1RenderTarget *renderTarget, const D2D1_RECT_U *srcRect) PURE; 636 STDMETHOD(CopyFromMemory)(ID2D1Bitmap *This, const D2D1_RECT_U *dstRect, const void *srcData, UINT32 pitch) PURE; 637 } ID2D1BitmapVtbl; 638 639 interface ID2D1Bitmap { 640 const ID2D1BitmapVtbl *lpVtbl; 641 }; 642 643 #define ID2D1Bitmap_QueryInterface(this,A,B) (this)->lpVtbl->Base.Base.Base.QueryInterface((IUnkwnown*)(this),A,B) 644 #define ID2D1Bitmap_AddRef(this) (this)->lpVtbl->Base.Base.Base.AddRef((IUnknown*)(this)) 645 #define ID2D1Bitmap_Release(this) (this)->lpVtbl->Base.Base.Base.Release((IUnknown*)(this)) 646 #define ID2D1Bitmap_GetFactory(this,A) (this)->lpVtbl->Base.Base.GetFactory((ID2D1Resource*)(this),A) 647 #define ID2D1Bitmap_GetSize(this) (this)->lpVtbl->GetSize(this) 648 #define ID2D1Bitmap_GetPixelSize(this) (this)->lpVtbl->GetPixelSize(this) 649 #define ID2D1Bitmap_GetPixelFormat(this) (this)->lpVtbl->GetPixelFormat(this) 650 #define ID2D1Bitmap_GetDpi(this,A,B) (this)->lpVtbl->GetDpi(this,A,B) 651 #define ID2D1Bitmap_CopyFromBitmap(this,A,B,C) (this)->lpVtbl->CopyFromBitmap(this,A,B,C) 652 #define ID2D1Bitmap_CopyFromRenderTarget(this,A,B,C) (this)->lpVtbl->CopyFromRenderTarget(this,A,B,C) 653 #define ID2D1Bitmap_CopyFromMemory(this,A,B,C) (this)->lpVtbl->CopyFromMemory(this,A,B,C) 654 655 #endif 656 657 DEFINE_GUID(IID_ID2D1BitmapBrush, 0x2cd906aa,0x12e2,0x11dc,0x9f,0xed,0x00,0x11,0x43,0xa0,0x55,0xf9); 658 659 #ifndef D2D_USE_C_DEFINITIONS 660 661 interface ID2D1BitmapBrush : public ID2D1Brush { 662 STDMETHOD_(void, SetExtendModeX)(D2D1_EXTEND_MODE extendModeX) PURE; 663 STDMETHOD_(void, SetExtendModeY)(D2D1_EXTEND_MODE extendModeY) PURE; 664 STDMETHOD_(void, SetInterpolationMode)(D2D1_BITMAP_INTERPOLATION_MODE interpolationMode) PURE; 665 STDMETHOD_(void, SetBitmap)(ID2D1Bitmap *bitmap) PURE; 666 STDMETHOD_(D2D1_EXTEND_MODE, GetExtendModeX)(void) const PURE; 667 STDMETHOD_(D2D1_EXTEND_MODE, GetExtendModeY)(void) const PURE; 668 STDMETHOD_(D2D1_BITMAP_INTERPOLATION_MODE, GetInterpolationMode)(void) const PURE; 669 STDMETHOD_(void, GetBitmap)(ID2D1Bitmap **bitmap) const PURE; 670 }; 671 672 #else 673 674 typedef struct ID2D1BitmapBrushVtbl { 675 ID2D1BrushVtbl Base; 676 677 STDMETHOD_(void, SetExtendModeX)(ID2D1BitmapBrush *This, D2D1_EXTEND_MODE extendModeX) PURE; 678 STDMETHOD_(void, SetExtendModeY)(ID2D1BitmapBrush *This, D2D1_EXTEND_MODE extendModeY) PURE; 679 STDMETHOD_(void, SetInterpolationMode)(ID2D1BitmapBrush *This, D2D1_BITMAP_INTERPOLATION_MODE interpolationMode) PURE; 680 STDMETHOD_(void, SetBitmap)(ID2D1BitmapBrush *This, ID2D1Bitmap *bitmap) PURE; 681 STDMETHOD_(D2D1_EXTEND_MODE, GetExtendModeX)(ID2D1BitmapBrush *This) PURE; 682 STDMETHOD_(D2D1_EXTEND_MODE, GetExtendModeY)(ID2D1BitmapBrush *This) PURE; 683 STDMETHOD_(D2D1_BITMAP_INTERPOLATION_MODE, GetInterpolationMode)(ID2D1BitmapBrush *This) PURE; 684 STDMETHOD_(void, GetBitmap)(ID2D1BitmapBrush *This, ID2D1Bitmap **bitmap) PURE; 685 } ID2D1BitmapBrushVtbl; 686 687 interface ID2D1BitmapBrush { 688 const ID2D1BitmapBrushVtbl *lpVtbl; 689 }; 690 691 #define ID2D1BitmapBrush_QueryInterface(this,A,B) (this)->lpVtbl->Base.Base.Base.QueryInterface((IUnkwnown*)(this),A,B) 692 #define ID2D1BitmapBrush_AddRef(this) (this)->lpVtbl->Base.Base.Base.AddRef((IUnknown*)(this)) 693 #define ID2D1BitmapBrush_Release(this) (this)->lpVtbl->Base.Base.Base.Release((IUnknown*)(this)) 694 #define ID2D1BitmapBrush_GetFactory(this,A) (this)->lpVtbl->Base.Base.GetFactory((ID2D1Resource*)(this),A) 695 #define ID2D1BitmapBrush_SetOpacity(this,A) (this)->lpVtbl->Base.SetOpacity((ID2D1Brush*)(this),A) 696 #define ID2D1BitmapBrush_SetTransform(this,A) (this)->lpVtbl->Base.SetTransform((ID2D1Brush*)(this),A) 697 #define ID2D1BitmapBrush_GetOpacity(this) (this)->lpVtbl->Base.GetOpacity((ID2D1Brush*)(this)) 698 #define ID2D1BitmapBrush_GetTransform(this,A) (this)->lpVtbl->Base.GetTransform((ID2D1Brush*)(this),A) 699 #define ID2D1BitmapBrush_SetExtendModeX(this,A) (this)->lpVtbl->SetExtendModeX(this,A) 700 #define ID2D1BitmapBrush_SetExtendModeY(this,A) (this)->lpVtbl->SetExtendModeY(this,A) 701 #define ID2D1BitmapBrush_SetInterpolationMode(this,A) (this)->lpVtbl->SetInterpolationMode(this,A) 702 #define ID2D1BitmapBrush_SetBitmap(this,A) (this)->lpVtbl->SetBitmap(this,A) 703 #define ID2D1BitmapBrush_GetExtendModeX(this) (this)->lpVtbl->GetExtendModeX(this) 704 #define ID2D1BitmapBrush_GetExtendModeY(this) (this)->lpVtbl->GetExtendModeY(this) 705 #define ID2D1BitmapBrush_GetInterpolationMode(this) (this)->lpVtbl->GetInterpolationMode(this) 706 #define ID2D1BitmapBrush_GetBitmap(this,A) (this)->lpVtbl->GetBitmap(this,A) 707 708 #endif 709 710 DEFINE_GUID(IID_ID2D1RenderTarget, 0x2cd90694,0x12e2,0x11dc,0x9f,0xed,0x00,0x11,0x43,0xa0,0x55,0xf9); 711 712 #ifndef D2D_USE_C_DEFINITIONS 713 714 interface ID2D1RenderTarget : public ID2D1Resource { 715 STDMETHOD(CreateBitmap)(D2D1_SIZE_U size, const void *srcData, UINT32 pitch, const D2D1_BITMAP_PROPERTIES *bitmapProperties, ID2D1Bitmap **bitmap) PURE; 716 STDMETHOD(CreateBitmapFromWicBitmap)(IWICBitmapSource *wicBitmapSource, const D2D1_BITMAP_PROPERTIES *bitmapProperties, ID2D1Bitmap **bitmap) PURE; 717 STDMETHOD(CreateSharedBitmap)(REFIID riid, void *data, const D2D1_BITMAP_PROPERTIES *bitmapProperties, ID2D1Bitmap **bitmap) PURE; 718 STDMETHOD(CreateBitmapBrush)(ID2D1Bitmap *bitmap, const D2D1_BITMAP_BRUSH_PROPERTIES *bitmapBrushProperties, const D2D1_BRUSH_PROPERTIES *brushProperties, ID2D1BitmapBrush **bitmapBrush) PURE; 719 STDMETHOD(CreateSolidColorBrush)(const D2D1_COLOR_F *color, const D2D1_BRUSH_PROPERTIES *brushProperties, ID2D1SolidColorBrush **solidColorBrush) PURE; 720 STDMETHOD(CreateGradientStopCollection)(const D2D1_GRADIENT_STOP *gradientStops, UINT gradientStopsCount, D2D1_GAMMA colorInterpolationGamma, D2D1_EXTEND_MODE extendMode, ID2D1GradientStopCollection **gradientStopCollection) PURE; 721 STDMETHOD(CreateLinearGradientBrush)(const D2D1_LINEAR_GRADIENT_BRUSH_PROPERTIES *linearGradientBrushProperties, const D2D1_BRUSH_PROPERTIES *brushProperties, ID2D1GradientStopCollection *gradientStopCollection, ID2D1LinearGradientBrush **linearGradientBrush) PURE; 722 STDMETHOD(CreateRadialGradientBrush)(const D2D1_RADIAL_GRADIENT_BRUSH_PROPERTIES *radialGradientBrushProperties, const D2D1_BRUSH_PROPERTIES *brushProperties, ID2D1GradientStopCollection *gradientStopCollection, ID2D1RadialGradientBrush **radialGradientBrush) PURE; 723 STDMETHOD(CreateCompatibleRenderTarget)(const D2D1_SIZE_F *desiredSize, const D2D1_SIZE_U *desiredPixelSize, const D2D1_PIXEL_FORMAT *desiredFormat, D2D1_COMPATIBLE_RENDER_TARGET_OPTIONS options, ID2D1BitmapRenderTarget **bitmapRenderTarget) PURE; 724 STDMETHOD(CreateLayer)(const D2D1_SIZE_F *size, ID2D1Layer **layer) PURE; 725 STDMETHOD(CreateMesh)(ID2D1Mesh **mesh) PURE; 726 STDMETHOD_(void, DrawLine)(D2D1_POINT_2F point0, D2D1_POINT_2F point1, ID2D1Brush *brush, FLOAT strokeWidth = 1.0f, ID2D1StrokeStyle *strokeStyle = NULL) PURE; 727 STDMETHOD_(void, DrawRectangle)(const D2D1_RECT_F *rect, ID2D1Brush *brush, FLOAT strokeWidth = 1.0f, ID2D1StrokeStyle *strokeStyle = NULL) PURE; 728 STDMETHOD_(void, FillRectangle)(const D2D1_RECT_F *rect, ID2D1Brush *brush) PURE; 729 STDMETHOD_(void, DrawRoundedRectangle)(const D2D1_ROUNDED_RECT *roundedRect, ID2D1Brush *brush, FLOAT strokeWidth = 1.0f, ID2D1StrokeStyle *strokeStyle = NULL) PURE; 730 STDMETHOD_(void, FillRoundedRectangle)(const D2D1_ROUNDED_RECT *roundedRect, ID2D1Brush *brush) PURE; 731 STDMETHOD_(void, DrawEllipse)(const D2D1_ELLIPSE *ellipse, ID2D1Brush *brush, FLOAT strokeWidth = 1.0f, ID2D1StrokeStyle *strokeStyle = NULL) PURE; 732 STDMETHOD_(void, FillEllipse)(const D2D1_ELLIPSE *ellipse, ID2D1Brush *brush) PURE; 733 STDMETHOD_(void, DrawGeometry)(ID2D1Geometry *geometry, ID2D1Brush *brush, FLOAT strokeWidth = 1.0f, ID2D1StrokeStyle *strokeStyle = NULL) PURE; 734 STDMETHOD_(void, FillGeometry)(ID2D1Geometry *geometry, ID2D1Brush *brush, ID2D1Brush *opacityBrush = NULL) PURE; 735 STDMETHOD_(void, FillMesh)(ID2D1Mesh *mesh, ID2D1Brush *brush) PURE; 736 STDMETHOD_(void, FillOpacityMask)(ID2D1Bitmap *opacityMask, ID2D1Brush *brush, D2D1_OPACITY_MASK_CONTENT content, const D2D1_RECT_F *destinationRectangle = NULL, const D2D1_RECT_F *sourceRectangle = NULL) PURE; 737 STDMETHOD_(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) PURE; 738 STDMETHOD_(void, DrawText)(const 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) PURE; 739 STDMETHOD_(void, DrawTextLayout)(D2D1_POINT_2F origin, IDWriteTextLayout *textLayout, ID2D1Brush *defaultForegroundBrush, D2D1_DRAW_TEXT_OPTIONS options = D2D1_DRAW_TEXT_OPTIONS_NONE) PURE; 740 STDMETHOD_(void, DrawGlyphRun)(D2D1_POINT_2F baselineOrigin, CONST DWRITE_GLYPH_RUN *glyphRun, ID2D1Brush *foregroundBrush, DWRITE_MEASURING_MODE measuringMode = DWRITE_MEASURING_MODE_NATURAL) PURE; 741 STDMETHOD_(void, SetTransform)(const D2D1_MATRIX_3X2_F *transform) PURE; 742 STDMETHOD_(void, GetTransform)(D2D1_MATRIX_3X2_F *transform) const PURE; 743 STDMETHOD_(void, SetAntialiasMode)(D2D1_ANTIALIAS_MODE antialiasMode) PURE; 744 STDMETHOD_(D2D1_ANTIALIAS_MODE, GetAntialiasMode)(void) const PURE; 745 STDMETHOD_(void, SetTextAntialiasMode)(D2D1_TEXT_ANTIALIAS_MODE textAntialiasMode) PURE; 746 STDMETHOD_(D2D1_TEXT_ANTIALIAS_MODE, GetTextAntialiasMode)(void) const PURE; 747 STDMETHOD_(void, SetTextRenderingParams)(IDWriteRenderingParams *textRenderingParams = NULL) PURE; 748 STDMETHOD_(void, GetTextRenderingParams)(IDWriteRenderingParams **textRenderingParams) const PURE; 749 STDMETHOD_(void, SetTags)(D2D1_TAG tag1, D2D1_TAG tag2) PURE; 750 STDMETHOD_(void, GetTags)(D2D1_TAG *tag1 = NULL, D2D1_TAG *tag2 = NULL) const PURE; 751 STDMETHOD_(void, PushLayer)(const D2D1_LAYER_PARAMETERS *layerParameters, ID2D1Layer *layer) PURE; 752 STDMETHOD_(void, PopLayer)(void) PURE; 753 STDMETHOD(Flush)(D2D1_TAG *tag1 = NULL, D2D1_TAG *tag2 = NULL) PURE; 754 STDMETHOD_(void, SaveDrawingState)(ID2D1DrawingStateBlock *drawingStateBlock) const PURE; 755 STDMETHOD_(void, RestoreDrawingState)(ID2D1DrawingStateBlock *drawingStateBlock) PURE; 756 STDMETHOD_(void, PushAxisAlignedClip)(const D2D1_RECT_F *clipRect, D2D1_ANTIALIAS_MODE antialiasMode) PURE; 757 STDMETHOD_(void, PopAxisAlignedClip)(void) PURE; 758 STDMETHOD_(void, Clear)(const D2D1_COLOR_F *clearColor = NULL) PURE; 759 STDMETHOD_(void, BeginDraw)(void) PURE; 760 STDMETHOD(EndDraw)(D2D1_TAG *tag1 = NULL, D2D1_TAG *tag2 = NULL) PURE; 761 762 #ifndef WIDL_EXPLICIT_AGGREGATE_RETURNS 763 STDMETHOD_(D2D1_PIXEL_FORMAT, GetPixelFormat)(void) const PURE; 764 #else 765 virtual D2D1_PIXEL_FORMAT* STDMETHODCALLTYPE GetPixelFormat(D2D1_PIXEL_FORMAT*) const = 0; 766 D2D1_PIXEL_FORMAT STDMETHODCALLTYPE GetPixelFormat() const { 767 D2D1_PIXEL_FORMAT __ret; 768 GetPixelFormat(&__ret); 769 return __ret; 770 } 771 #endif 772 773 STDMETHOD_(void, SetDpi)(FLOAT dpiX, FLOAT dpiY) PURE; 774 STDMETHOD_(void, GetDpi)(FLOAT *dpiX, FLOAT *dpiY) const PURE; 775 776 #ifndef WIDL_EXPLICIT_AGGREGATE_RETURNS 777 STDMETHOD_(D2D1_SIZE_F, GetSize)(void) const PURE; 778 #else 779 virtual D2D1_SIZE_F* STDMETHODCALLTYPE GetSize(D2D1_SIZE_F*) const = 0; 780 D2D1_SIZE_F STDMETHODCALLTYPE GetSize() const { 781 D2D1_SIZE_F __ret; 782 GetSize(&__ret); 783 return __ret; 784 } 785 #endif 786 787 #ifndef WIDL_EXPLICIT_AGGREGATE_RETURNS 788 STDMETHOD_(D2D1_SIZE_U, GetPixelSize)(void) const PURE; 789 #else 790 virtual D2D1_SIZE_U* STDMETHODCALLTYPE GetPixelSize(D2D1_SIZE_U*) const = 0; 791 D2D1_SIZE_U STDMETHODCALLTYPE GetPixelSize() const { 792 D2D1_SIZE_U __ret; 793 GetPixelSize(&__ret); 794 return __ret; 795 } 796 #endif 797 798 STDMETHOD_(UINT32, GetMaximumBitmapSize)(void) const PURE; 799 STDMETHOD_(BOOL, IsSupported)(const D2D1_RENDER_TARGET_PROPERTIES *renderTargetProperties) const PURE; 800 801 HRESULT CreateBitmap(D2D1_SIZE_U size, const void *srcData, UINT32 pitch, const D2D1_BITMAP_PROPERTIES &bitmapProperties, ID2D1Bitmap **bitmap) { 802 return CreateBitmap(size, srcData, pitch, &bitmapProperties, bitmap); 803 } 804 805 HRESULT CreateBitmap(D2D1_SIZE_U size, const D2D1_BITMAP_PROPERTIES &bitmapProperties, ID2D1Bitmap **bitmap) { 806 return CreateBitmap(size, NULL, 0, &bitmapProperties, bitmap); 807 } 808 809 HRESULT CreateBitmapFromWicBitmap(IWICBitmapSource *wicBitmapSource, const D2D1_BITMAP_PROPERTIES &bitmapProperties, ID2D1Bitmap **bitmap) { 810 return CreateBitmapFromWicBitmap(wicBitmapSource, &bitmapProperties, bitmap); 811 } 812 813 HRESULT CreateBitmapFromWicBitmap(IWICBitmapSource *wicBitmapSource, ID2D1Bitmap **bitmap) { 814 return CreateBitmapFromWicBitmap(wicBitmapSource, NULL, bitmap); 815 } 816 817 HRESULT CreateBitmapBrush(ID2D1Bitmap *bitmap, ID2D1BitmapBrush **bitmapBrush) { 818 return CreateBitmapBrush(bitmap, NULL, NULL, bitmapBrush); 819 } 820 821 HRESULT CreateBitmapBrush(ID2D1Bitmap *bitmap, const D2D1_BITMAP_BRUSH_PROPERTIES &bitmapBrushProperties, ID2D1BitmapBrush **bitmapBrush) { 822 return CreateBitmapBrush(bitmap, &bitmapBrushProperties, NULL, bitmapBrush); 823 } 824 825 HRESULT CreateBitmapBrush(ID2D1Bitmap *bitmap, const D2D1_BITMAP_BRUSH_PROPERTIES &bitmapBrushProperties, const D2D1_BRUSH_PROPERTIES &brushProperties, ID2D1BitmapBrush **bitmapBrush) { 826 return CreateBitmapBrush(bitmap, &bitmapBrushProperties, &brushProperties, bitmapBrush); 827 } 828 829 HRESULT CreateSolidColorBrush(const D2D1_COLOR_F &color, ID2D1SolidColorBrush **solidColorBrush) { 830 return CreateSolidColorBrush(&color, NULL, solidColorBrush); 831 } 832 833 HRESULT CreateSolidColorBrush(const D2D1_COLOR_F &color, const D2D1_BRUSH_PROPERTIES &brushProperties, ID2D1SolidColorBrush **solidColorBrush) { 834 return CreateSolidColorBrush(&color, &brushProperties, solidColorBrush); 835 } 836 837 HRESULT CreateGradientStopCollection(const D2D1_GRADIENT_STOP *gradientStops, UINT gradientStopsCount, ID2D1GradientStopCollection **gradientStopCollection) { 838 return CreateGradientStopCollection(gradientStops, gradientStopsCount, D2D1_GAMMA_2_2, D2D1_EXTEND_MODE_CLAMP, gradientStopCollection); 839 } 840 841 HRESULT CreateLinearGradientBrush(const D2D1_LINEAR_GRADIENT_BRUSH_PROPERTIES &linearGradientBrushProperties, ID2D1GradientStopCollection *gradientStopCollection, ID2D1LinearGradientBrush **linearGradientBrush) { 842 return CreateLinearGradientBrush(&linearGradientBrushProperties, NULL, gradientStopCollection, linearGradientBrush); 843 } 844 845 HRESULT CreateLinearGradientBrush(const D2D1_LINEAR_GRADIENT_BRUSH_PROPERTIES &linearGradientBrushProperties, const D2D1_BRUSH_PROPERTIES &brushProperties, ID2D1GradientStopCollection *gradientStopCollection, ID2D1LinearGradientBrush **linearGradientBrush) { 846 return CreateLinearGradientBrush(&linearGradientBrushProperties, &brushProperties, gradientStopCollection, linearGradientBrush); 847 } 848 849 HRESULT CreateRadialGradientBrush(const D2D1_RADIAL_GRADIENT_BRUSH_PROPERTIES &radialGradientBrushProperties, ID2D1GradientStopCollection *gradientStopCollection, ID2D1RadialGradientBrush **radialGradientBrush) { 850 return CreateRadialGradientBrush(&radialGradientBrushProperties, NULL, gradientStopCollection, radialGradientBrush); 851 } 852 853 HRESULT CreateRadialGradientBrush(const D2D1_RADIAL_GRADIENT_BRUSH_PROPERTIES &radialGradientBrushProperties, const D2D1_BRUSH_PROPERTIES &brushProperties, ID2D1GradientStopCollection *gradientStopCollection, ID2D1RadialGradientBrush **radialGradientBrush) { 854 return CreateRadialGradientBrush(&radialGradientBrushProperties, &brushProperties, gradientStopCollection, radialGradientBrush); 855 } 856 857 HRESULT CreateCompatibleRenderTarget(ID2D1BitmapRenderTarget **bitmapRenderTarget) { 858 return CreateCompatibleRenderTarget(NULL, NULL, NULL, D2D1_COMPATIBLE_RENDER_TARGET_OPTIONS_NONE, bitmapRenderTarget); 859 } 860 861 HRESULT CreateCompatibleRenderTarget(D2D1_SIZE_F desiredSize, ID2D1BitmapRenderTarget **bitmapRenderTarget) { 862 return CreateCompatibleRenderTarget(&desiredSize, NULL, NULL, D2D1_COMPATIBLE_RENDER_TARGET_OPTIONS_NONE, bitmapRenderTarget); 863 } 864 865 HRESULT CreateCompatibleRenderTarget(D2D1_SIZE_F desiredSize, D2D1_SIZE_U desiredPixelSize, ID2D1BitmapRenderTarget **bitmapRenderTarget){ 866 return CreateCompatibleRenderTarget(&desiredSize, &desiredPixelSize, NULL, D2D1_COMPATIBLE_RENDER_TARGET_OPTIONS_NONE, bitmapRenderTarget); 867 } 868 869 HRESULT CreateCompatibleRenderTarget(D2D1_SIZE_F desiredSize, D2D1_SIZE_U desiredPixelSize, D2D1_PIXEL_FORMAT desiredFormat, ID2D1BitmapRenderTarget **bitmapRenderTarget) { 870 return CreateCompatibleRenderTarget(&desiredSize, &desiredPixelSize, &desiredFormat, D2D1_COMPATIBLE_RENDER_TARGET_OPTIONS_NONE, bitmapRenderTarget); 871 } 872 873 HRESULT CreateCompatibleRenderTarget(D2D1_SIZE_F desiredSize, D2D1_SIZE_U desiredPixelSize, D2D1_PIXEL_FORMAT desiredFormat, D2D1_COMPATIBLE_RENDER_TARGET_OPTIONS options, ID2D1BitmapRenderTarget **bitmapRenderTarget) { 874 return CreateCompatibleRenderTarget(&desiredSize, &desiredPixelSize, &desiredFormat, options, bitmapRenderTarget); 875 } 876 877 HRESULT CreateLayer(D2D1_SIZE_F size, ID2D1Layer **layer) { 878 return CreateLayer(&size, layer); 879 } 880 881 HRESULT CreateLayer(ID2D1Layer **layer) { 882 return CreateLayer(NULL, layer); 883 } 884 885 void DrawRectangle(const D2D1_RECT_F &rect, ID2D1Brush *brush, FLOAT strokeWidth = 1.0f, ID2D1StrokeStyle *strokeStyle = NULL) { 886 DrawRectangle(&rect, brush, strokeWidth, strokeStyle); 887 } 888 889 void FillRectangle(const D2D1_RECT_F &rect, ID2D1Brush *brush) { 890 FillRectangle(&rect, brush); 891 } 892 893 void DrawRoundedRectangle(const D2D1_ROUNDED_RECT &roundedRect, ID2D1Brush *brush, FLOAT strokeWidth = 1.0f, ID2D1StrokeStyle *strokeStyle = NULL) { 894 DrawRoundedRectangle(&roundedRect, brush, strokeWidth, strokeStyle); 895 } 896 897 void FillRoundedRectangle(const D2D1_ROUNDED_RECT &roundedRect, ID2D1Brush *brush) { 898 FillRoundedRectangle(&roundedRect, brush); 899 } 900 901 void DrawEllipse(const D2D1_ELLIPSE &ellipse, ID2D1Brush *brush, FLOAT strokeWidth = 1.0f, ID2D1StrokeStyle *strokeStyle = NULL) { 902 DrawEllipse(&ellipse, brush, strokeWidth, strokeStyle); 903 } 904 905 void FillEllipse(const D2D1_ELLIPSE &ellipse, ID2D1Brush *brush) { 906 FillEllipse(&ellipse, brush); 907 } 908 909 void FillOpacityMask(ID2D1Bitmap *opacityMask, ID2D1Brush *brush, D2D1_OPACITY_MASK_CONTENT content, const D2D1_RECT_F &destinationRectangle, const D2D1_RECT_F &sourceRectangle) { 910 FillOpacityMask(opacityMask, brush, content, &destinationRectangle, &sourceRectangle); 911 } 912 913 void DrawBitmap(ID2D1Bitmap *bitmap, const D2D1_RECT_F &destinationRectangle, FLOAT opacity = 1.0f, D2D1_BITMAP_INTERPOLATION_MODE interpolationMode = D2D1_BITMAP_INTERPOLATION_MODE_LINEAR, const D2D1_RECT_F *sourceRectangle = NULL) { 914 DrawBitmap(bitmap, &destinationRectangle, opacity, interpolationMode, sourceRectangle); 915 } 916 917 void DrawBitmap(ID2D1Bitmap *bitmap, const D2D1_RECT_F &destinationRectangle, FLOAT opacity, D2D1_BITMAP_INTERPOLATION_MODE interpolationMode, const D2D1_RECT_F &sourceRectangle) { 918 DrawBitmap(bitmap, &destinationRectangle, opacity, interpolationMode, &sourceRectangle); 919 } 920 921 void SetTransform(const D2D1_MATRIX_3X2_F &transform) { 922 SetTransform(&transform); 923 } 924 925 void PushLayer(const D2D1_LAYER_PARAMETERS &layerParameters, ID2D1Layer *layer) { 926 PushLayer(&layerParameters, layer); 927 } 928 929 void PushAxisAlignedClip(const D2D1_RECT_F &clipRect, D2D1_ANTIALIAS_MODE antialiasMode) { 930 return PushAxisAlignedClip(&clipRect, antialiasMode); 931 } 932 933 void Clear(const D2D1_COLOR_F &clearColor) { 934 return Clear(&clearColor); 935 } 936 937 void DrawText(const 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) { 938 return DrawText(string, stringLength, textFormat, &layoutRect, defaultForegroundBrush, options, measuringMode); 939 } 940 941 BOOL IsSupported(const D2D1_RENDER_TARGET_PROPERTIES &renderTargetProperties) const { 942 return IsSupported(&renderTargetProperties); 943 } 944 }; 945 946 #else 947 948 typedef struct ID2D1RenderTargetVtbl { 949 ID2D1ResourceVtbl Base; 950 951 STDMETHOD(CreateBitmap)(ID2D1RenderTarget *This, D2D1_SIZE_U size, const void *srcData, UINT32 pitch, const D2D1_BITMAP_PROPERTIES *bitmapProperties, ID2D1Bitmap **bitmap) PURE; 952 STDMETHOD(CreateBitmapFromWicBitmap)(ID2D1RenderTarget *This, IWICBitmapSource *wicBitmapSource, const D2D1_BITMAP_PROPERTIES *bitmapProperties, ID2D1Bitmap **bitmap) PURE; 953 STDMETHOD(CreateSharedBitmap)(ID2D1RenderTarget *This, REFIID riid, void *data, const D2D1_BITMAP_PROPERTIES *bitmapProperties, ID2D1Bitmap **bitmap) PURE; 954 STDMETHOD(CreateBitmapBrush)(ID2D1RenderTarget *This, ID2D1Bitmap *bitmap, const D2D1_BITMAP_BRUSH_PROPERTIES *bitmapBrushProperties, const D2D1_BRUSH_PROPERTIES *brushProperties, ID2D1BitmapBrush **bitmapBrush) PURE; 955 STDMETHOD(CreateSolidColorBrush)(ID2D1RenderTarget *This, const D2D1_COLOR_F *color, const D2D1_BRUSH_PROPERTIES *brushProperties, ID2D1SolidColorBrush **solidColorBrush) PURE; 956 STDMETHOD(CreateGradientStopCollection)(ID2D1RenderTarget *This, const D2D1_GRADIENT_STOP *gradientStops, UINT gradientStopsCount, D2D1_GAMMA colorInterpolationGamma, D2D1_EXTEND_MODE extendMode, ID2D1GradientStopCollection **gradientStopCollection) PURE; 957 STDMETHOD(CreateLinearGradientBrush)(ID2D1RenderTarget *This, const D2D1_LINEAR_GRADIENT_BRUSH_PROPERTIES *linearGradientBrushProperties, const D2D1_BRUSH_PROPERTIES *brushProperties, ID2D1GradientStopCollection *gradientStopCollection, ID2D1LinearGradientBrush **linearGradientBrush) PURE; 958 STDMETHOD(CreateRadialGradientBrush)(ID2D1RenderTarget *This, const D2D1_RADIAL_GRADIENT_BRUSH_PROPERTIES *radialGradientBrushProperties, const D2D1_BRUSH_PROPERTIES *brushProperties, ID2D1GradientStopCollection *gradientStopCollection, ID2D1RadialGradientBrush **radialGradientBrush) PURE; 959 STDMETHOD(CreateCompatibleRenderTarget)(ID2D1RenderTarget *This, const D2D1_SIZE_F *desiredSize, const D2D1_SIZE_U *desiredPixelSize, const D2D1_PIXEL_FORMAT *desiredFormat, D2D1_COMPATIBLE_RENDER_TARGET_OPTIONS options, ID2D1BitmapRenderTarget **bitmapRenderTarget) PURE; 960 STDMETHOD(CreateLayer)(ID2D1RenderTarget *This, const D2D1_SIZE_F *size, ID2D1Layer **layer) PURE; 961 STDMETHOD(CreateMesh)(ID2D1RenderTarget *This, ID2D1Mesh **mesh) PURE; 962 STDMETHOD_(void, DrawLine)(ID2D1RenderTarget *This, D2D1_POINT_2F point0, D2D1_POINT_2F point1, ID2D1Brush *brush, FLOAT strokeWidth, ID2D1StrokeStyle *strokeStyle) PURE; 963 STDMETHOD_(void, DrawRectangle)(ID2D1RenderTarget *This, const D2D1_RECT_F *rect, ID2D1Brush *brush, FLOAT strokeWidth, ID2D1StrokeStyle *strokeStyle) PURE; 964 STDMETHOD_(void, FillRectangle)(ID2D1RenderTarget *This, const D2D1_RECT_F *rect, ID2D1Brush *brush) PURE; 965 STDMETHOD_(void, DrawRoundedRectangle)(ID2D1RenderTarget *This, const D2D1_ROUNDED_RECT *roundedRect, ID2D1Brush *brush, FLOAT strokeWidth, ID2D1StrokeStyle *strokeStyle) PURE; 966 STDMETHOD_(void, FillRoundedRectangle)(ID2D1RenderTarget *This, const D2D1_ROUNDED_RECT *roundedRect, ID2D1Brush *brush) PURE; 967 STDMETHOD_(void, DrawEllipse)(ID2D1RenderTarget *This, const D2D1_ELLIPSE *ellipse, ID2D1Brush *brush, FLOAT strokeWidth, ID2D1StrokeStyle *strokeStyle) PURE; 968 STDMETHOD_(void, FillEllipse)(ID2D1RenderTarget *This, const D2D1_ELLIPSE *ellipse, ID2D1Brush *brush) PURE; 969 STDMETHOD_(void, DrawGeometry)(ID2D1RenderTarget *This, ID2D1Geometry *geometry, ID2D1Brush *brush, FLOAT strokeWidth, ID2D1StrokeStyle *strokeStyle) PURE; 970 STDMETHOD_(void, FillGeometry)(ID2D1RenderTarget *This, ID2D1Geometry *geometry, ID2D1Brush *brush, ID2D1Brush *opacityBrush) PURE; 971 STDMETHOD_(void, FillMesh)(ID2D1RenderTarget *This, ID2D1Mesh *mesh, ID2D1Brush *brush) PURE; 972 STDMETHOD_(void, FillOpacityMask)(ID2D1RenderTarget *This, ID2D1Bitmap *opacityMask, ID2D1Brush *brush, D2D1_OPACITY_MASK_CONTENT content, const D2D1_RECT_F *destinationRectangle, const D2D1_RECT_F *sourceRectangle) PURE; 973 STDMETHOD_(void, DrawBitmap)(ID2D1RenderTarget *This, ID2D1Bitmap *bitmap, const D2D1_RECT_F *destinationRectangle, FLOAT opacity, D2D1_BITMAP_INTERPOLATION_MODE interpolationMode, const D2D1_RECT_F *sourceRectangle) PURE; 974 STDMETHOD_(void, DrawText)(ID2D1RenderTarget *This, const WCHAR *string, UINT stringLength, IDWriteTextFormat *textFormat, const D2D1_RECT_F *layoutRect, ID2D1Brush *defaultForegroundBrush, D2D1_DRAW_TEXT_OPTIONS options, DWRITE_MEASURING_MODE measuringMode) PURE; 975 STDMETHOD_(void, DrawTextLayout)(ID2D1RenderTarget *This, D2D1_POINT_2F origin, IDWriteTextLayout *textLayout, ID2D1Brush *defaultForegroundBrush, D2D1_DRAW_TEXT_OPTIONS options) PURE; 976 STDMETHOD_(void, DrawGlyphRun)(ID2D1RenderTarget *This, D2D1_POINT_2F baselineOrigin, const DWRITE_GLYPH_RUN *glyphRun, ID2D1Brush *foregroundBrush, DWRITE_MEASURING_MODE measuringMode) PURE; 977 STDMETHOD_(void, SetTransform)(ID2D1RenderTarget *This, const D2D1_MATRIX_3X2_F *transform) PURE; 978 STDMETHOD_(void, GetTransform)(ID2D1RenderTarget *This, D2D1_MATRIX_3X2_F *transform) PURE; 979 STDMETHOD_(void, SetAntialiasMode)(ID2D1RenderTarget *This, D2D1_ANTIALIAS_MODE antialiasMode) PURE; 980 STDMETHOD_(D2D1_ANTIALIAS_MODE, GetAntialiasMode)(ID2D1RenderTarget *This) PURE; 981 STDMETHOD_(void, SetTextAntialiasMode)(ID2D1RenderTarget *This, D2D1_TEXT_ANTIALIAS_MODE textAntialiasMode) PURE; 982 STDMETHOD_(D2D1_TEXT_ANTIALIAS_MODE, GetTextAntialiasMode)(ID2D1RenderTarget *This) PURE; 983 STDMETHOD_(void, SetTextRenderingParams)(ID2D1RenderTarget *This, IDWriteRenderingParams *textRenderingParams) PURE; 984 STDMETHOD_(void, GetTextRenderingParams)(ID2D1RenderTarget *This, IDWriteRenderingParams **textRenderingParams) PURE; 985 STDMETHOD_(void, SetTags)(ID2D1RenderTarget *This, D2D1_TAG tag1, D2D1_TAG tag2) PURE; 986 STDMETHOD_(void, GetTags)(ID2D1RenderTarget *This, D2D1_TAG *tag1, D2D1_TAG *tag2) PURE; 987 STDMETHOD_(void, PushLayer)(ID2D1RenderTarget *This, const D2D1_LAYER_PARAMETERS *layerParameters, ID2D1Layer *layer) PURE; 988 STDMETHOD_(void, PopLayer)(ID2D1RenderTarget *This) PURE; 989 STDMETHOD(Flush)(ID2D1RenderTarget *This, D2D1_TAG *tag1, D2D1_TAG *tag2) PURE; 990 STDMETHOD_(void, SaveDrawingState)(ID2D1RenderTarget *This, ID2D1DrawingStateBlock *drawingStateBlock) PURE; 991 STDMETHOD_(void, RestoreDrawingState)(ID2D1RenderTarget *This, ID2D1DrawingStateBlock *drawingStateBlock) PURE; 992 STDMETHOD_(void, PushAxisAlignedClip)(ID2D1RenderTarget *This, const D2D1_RECT_F *clipRect, D2D1_ANTIALIAS_MODE antialiasMode) PURE; 993 STDMETHOD_(void, PopAxisAlignedClip)(ID2D1RenderTarget *This) PURE; 994 STDMETHOD_(void, Clear)(ID2D1RenderTarget *This, const D2D1_COLOR_F *clearColor) PURE; 995 STDMETHOD_(void, BeginDraw)(ID2D1RenderTarget *This) PURE; 996 STDMETHOD(EndDraw)(ID2D1RenderTarget *This, D2D1_TAG *tag1, D2D1_TAG *tag2) PURE; 997 STDMETHOD_(D2D1_PIXEL_FORMAT, GetPixelFormat)(ID2D1RenderTarget *This) PURE; 998 STDMETHOD_(void, SetDpi)(ID2D1RenderTarget *This, FLOAT dpiX, FLOAT dpiY) PURE; 999 STDMETHOD_(void, GetDpi)(ID2D1RenderTarget *This, FLOAT *dpiX, FLOAT *dpiY) PURE; 1000 STDMETHOD_(D2D1_SIZE_F, GetSize)(ID2D1RenderTarget *This) PURE; 1001 STDMETHOD_(D2D1_SIZE_U, GetPixelSize)(ID2D1RenderTarget *This) PURE; 1002 STDMETHOD_(UINT32, GetMaximumBitmapSize)(ID2D1RenderTarget *This) PURE; 1003 STDMETHOD_(BOOL, IsSupported)(ID2D1RenderTarget *This, const D2D1_RENDER_TARGET_PROPERTIES *renderTargetProperties) PURE; 1004 } ID2D1RenderTargetVtbl; 1005 1006 interface ID2D1RenderTarget { 1007 const ID2D1RenderTargetVtbl *lpVtbl; 1008 }; 1009 1010 #define ID2D1RenderTarget_QueryInterface(this,A,B) (this)->lpVtbl->Base.Base.QueryInterface((IUnknown*)(this),A,B) 1011 #define ID2D1RenderTarget_AddRef(this) (this)->lpVtbl->Base.Base.AddRef((IUnknown*)(this)) 1012 #define ID2D1RenderTarget_Release(this) (this)->lpVtbl->Base.Base.Release((IUnknown*)(this)) 1013 #define ID2D1RenderTarget_GetFactory(this,A) (this)->lpVtbl->Base.GetFactory((ID2D1Resource*)(this),A) 1014 #define ID2D1RenderTarget_BeginDraw(this) (this)->lpVtbl->BeginDraw(this) 1015 #define ID2D1RenderTarget_Clear(this,A) (this)->lpVtbl->Clear(this,A) 1016 #define ID2D1RenderTarget_CreateBitmap(this,A,B,C,D,E) (this)->lpVtbl->CreateBitmap(this,A,B,C,D,E) 1017 #define ID2D1RenderTarget_CreateBitmapBrush(this,A,B) (this)->lpVtbl->CreateBitmapBrush(this,A,B) 1018 #define ID2D1RenderTarget_CreateBitmapFromWicBitmap(this,A,B,C) (this)->lpVtbl->CreateBitmapFromWicBitmap(this,A,B,C) 1019 #define ID2D1RenderTarget_CreateCompatibleRenderTarget(this,A,B,C,D,E) (this)->lpVtbl->CreateCompatibleRenderTarget(this,A,B,C,D,E) 1020 #define ID2D1RenderTarget_CreateGradientStopCollection(this,A,B,C) (this)->lpVtbl->CreateGradientStopCollection(this,A,B,C) 1021 #define ID2D1RenderTarget_CreateLayer(this,A,B) (this)->lpVtbl->CreateLayer(this,A,B) 1022 #define ID2D1RenderTarget_CreateLinearGradientBrush(this,A,B,C,D) (this)->lpVtbl->CreateLinearGradientBrush(this,A,B,C,D) 1023 #define ID2D1RenderTarget_CreateMesh(this,A) (this)->lpVtbl->CreateMesh(this,A) 1024 #define ID2D1RenderTarget_CreateRadialGradientBrush(this,A,B,C,D) (this)->lpVtbl->CreateRadialGradientBrush(this,A,B,C,D) 1025 #define ID2D1RenderTarget_CreateSharedBitmap(this,A,B,C,D) (this)->lpVtbl->CreateSharedBitmap(this,A,B,C,D) 1026 #define ID2D1RenderTarget_CreateSolidColorBrush(this,A,B,C) (this)->lpVtbl->CreateSolidColorBrush(this,A,B,C) 1027 #define ID2D1RenderTarget_DrawBitmap(this,A,B,C,D,E) (this)->lpVtbl->DrawBitmap(this,A,B,C,D,E) 1028 #define ID2D1RenderTarget_DrawEllipse(this,A,B,C,D) (this)->lpVtbl->DrawEllipse(this,A,B,C,D) 1029 #define ID2D1RenderTarget_DrawGeometry(this,A,B,C,D) (this)->lpVtbl->DrawGeometry(this,A,B,C,D) 1030 #define ID2D1RenderTarget_DrawGlyphRun(this,A,B,C,D) (this)->lpVtbl->DrawGlyphRun(this,A,B,C,D) 1031 #define ID2D1RenderTarget_DrawLine(this,A,B,C,D,E) (this)->lpVtbl->DrawLine(this,A,B,C,D,E) 1032 #define ID2D1RenderTarget_DrawRectangle(this,A,B,C,D) (this)->lpVtbl->DrawRectangle(this,A,B,C,D) 1033 #define ID2D1RenderTarget_DrawRoundedRectangle(this,A,B,C,D) (this)->lpVtbl->DrawRoundedRectangle(this,A,B,C,D) 1034 #define ID2D1RenderTarget_DrawText(this,A,B,C,D,E,F,G) (this)->lpVtbl->DrawText(this,A,B,C,D,E,F,G) 1035 #define ID2D1RenderTarget_DrawTextLayout(this,A,B,C,D) (this)->lpVtbl->DrawTextLayout(this,A,B,C,D) 1036 #define ID2D1RenderTarget_EndDraw(this,A,B) (this)->lpVtbl->EndDraw(this,A,B) 1037 #define ID2D1RenderTarget_FillEllipse(this,A,B) (this)->lpVtbl->FillEllipse(this,A,B) 1038 #define ID2D1RenderTarget_FillGeometry(this,A,B,C) (this)->lpVtbl->FillGeometry(this,A,B,C) 1039 #define ID2D1RenderTarget_FillMesh(this,A,B) (this)->lpVtbl->FillMesh(this,A,B) 1040 #define ID2D1RenderTarget_FillOpacityMask(this,A,B,C,D,E) (this)->lpVtbl->FillOpacityMask(this,A,B,C,D,E) 1041 #define ID2D1RenderTarget_FillRectangle(this,A,B) (this)->lpVtbl->FillRectangle(this,A,B) 1042 #define ID2D1RenderTarget_FillRoundedRectangle(this,A,B) (this)->lpVtbl->FillRoundedRectangle(this,A,B) 1043 #define ID2D1RenderTarget_Flush(this,A,B) (this)->lpVtbl->Flush(this,A,B) 1044 #define ID2D1RenderTarget_GetAntialiasMode(this) (this)->lpVtbl->GetAntialiasMode(this) 1045 #define ID2D1RenderTarget_GetDpi(this,A,B) (this)->lpVtbl->GetDpi(this,A,B) 1046 #define ID2D1RenderTarget_GetMaximumBitmapSize(this) (this)->lpVtbl->GetMaximumBitmapSize(this) 1047 #define ID2D1RenderTarget_GetPixelFormat(this) (this)->lpVtbl->GetPixelFormat(this) 1048 #define ID2D1RenderTarget_GetPixelSize(this) (this)->lpVtbl->GetPixelSize(this) 1049 #define ID2D1RenderTarget_GetSize(this) (this)->lpVtbl->GetSize(this) 1050 #define ID2D1RenderTarget_GetTags(this,A,B) (this)->lpVtbl->GetTags(this,A,B) 1051 #define ID2D1RenderTarget_GetTextAntialiasMode(this) (this)->lpVtbl->GetTextAntialiasMode(this) 1052 #define ID2D1RenderTarget_GetTextRenderingParams(this,A) (this)->lpVtbl->GetTextRenderingParams(this,A) 1053 #define ID2D1RenderTarget_GetTransform(this,A) (this)->lpVtbl->GetTransform(this,A) 1054 #define ID2D1RenderTarget_IsSupported(this,A) (this)->lpVtbl->IsSupported(this,A) 1055 #define ID2D1RenderTarget_PopAxisAlignedClip(this) (this)->lpVtbl->PopAxisAlignedClip(this) 1056 #define ID2D1RenderTarget_PopLayer(this) (this)->lpVtbl->PopLayer(this) 1057 #define ID2D1RenderTarget_PushAxisAlignedClip(this,A,B) (this)->lpVtbl->PushAxisAlignedClip(this,A,B) 1058 #define ID2D1RenderTarget_PushLayer(this,A,B) (this)->lpVtbl->PushLayer(this,A,B) 1059 #define ID2D1RenderTarget_RestoreDrawingState(this,A) (this)->lpVtbl->RestoreDrawingState(this,A) 1060 #define ID2D1RenderTarget_SaveDrawingState(this,A) (this)->lpVtbl->SaveDrawingState(this,A) 1061 #define ID2D1RenderTarget_SetAntialiasMode(this,A) (this)->lpVtbl->SetAntialiasMode(this,A) 1062 #define ID2D1RenderTarget_SetDpi(this,A,B) (this)->lpVtbl->SetDpi(this,A,B) 1063 #define ID2D1RenderTarget_SetTags(this,A,B) (this)->lpVtbl->SetTags(this,A,B) 1064 #define ID2D1RenderTarget_SetTextAntialiasMode(this,A) (this)->lpVtbl->SetTextAntialiasMode(this,A) 1065 #define ID2D1RenderTarget_SetTextRenderingParams(this,A) (this)->lpVtbl->SetTextRenderingParams(this,A) 1066 #define ID2D1RenderTarget_SetTransform(this,A) (this)->lpVtbl->SetTransform(this,A) 1067 1068 #endif 1069 1070 DEFINE_GUID(IID_ID2D1Geometry, 0x2cd906a1,0x12e2,0x11dc,0x9f,0xed,0x00,0x11,0x43,0xa0,0x55,0xf9); 1071 1072 #ifndef D2D_USE_C_DEFINITIONS 1073 1074 interface ID2D1Geometry : public ID2D1Resource { 1075 STDMETHOD(GetBounds)(const D2D1_MATRIX_3X2_F *worldTransform, D2D1_RECT_F *bounds) const PURE; 1076 STDMETHOD(GetWidenedBounds)(FLOAT strokeWidth, ID2D1StrokeStyle *strokeStyle, const D2D1_MATRIX_3X2_F *worldTransform, FLOAT flatteningTolerance, D2D1_RECT_F *bounds) const PURE; 1077 STDMETHOD(StrokeContainsPoint)(D2D1_POINT_2F point, FLOAT strokeWidth, ID2D1StrokeStyle *strokeStyle, const D2D1_MATRIX_3X2_F *worldTransform, FLOAT flatteningTolerance, BOOL *contains) const PURE; 1078 STDMETHOD(FillContainsPoint)(D2D1_POINT_2F point, const D2D1_MATRIX_3X2_F *worldTransform, FLOAT flatteningTolerance, BOOL *contains) const PURE; 1079 STDMETHOD(CompareWithGeometry)(ID2D1Geometry *inputGeometry, const D2D1_MATRIX_3X2_F *inputGeometryTransform, FLOAT flatteningTolerance, D2D1_GEOMETRY_RELATION *relation) const PURE; 1080 STDMETHOD(Simplify)(D2D1_GEOMETRY_SIMPLIFICATION_OPTION simplificationOption, const D2D1_MATRIX_3X2_F *worldTransform, FLOAT flatteningTolerance, ID2D1SimplifiedGeometrySink *geometrySink) const PURE; 1081 STDMETHOD(Tessellate)(const D2D1_MATRIX_3X2_F *worldTransform, FLOAT flatteningTolerance, ID2D1TessellationSink *tessellationSink) const PURE; 1082 STDMETHOD(CombineWithGeometry)(ID2D1Geometry *inputGeometry, D2D1_COMBINE_MODE combineMode, const D2D1_MATRIX_3X2_F *inputGeometryTransform, FLOAT flatteningTolerance, ID2D1SimplifiedGeometrySink *geometrySink) const PURE; 1083 STDMETHOD(Outline)(const D2D1_MATRIX_3X2_F *worldTransform, FLOAT flatteningTolerance, ID2D1SimplifiedGeometrySink *geometrySink) const PURE; 1084 STDMETHOD(ComputeArea)(const D2D1_MATRIX_3X2_F *worldTransform, FLOAT flatteningTolerance, FLOAT *area) const PURE; 1085 STDMETHOD(ComputeLength)(const D2D1_MATRIX_3X2_F *worldTransform, FLOAT flatteningTolerance, FLOAT *length) const PURE; 1086 STDMETHOD(ComputePointAtLength)(FLOAT length, const D2D1_MATRIX_3X2_F *worldTransform, FLOAT flatteningTolerance, D2D1_POINT_2F *point, D2D1_POINT_2F *unitTangentVector) const PURE; 1087 STDMETHOD(Widen)(FLOAT strokeWidth, ID2D1StrokeStyle *strokeStyle, const D2D1_MATRIX_3X2_F *worldTransform, FLOAT flatteningTolerance, ID2D1SimplifiedGeometrySink *geometrySink) const PURE; 1088 1089 HRESULT GetBounds(const D2D1_MATRIX_3X2_F &worldTransform, D2D1_RECT_F *bounds) const { 1090 return GetBounds(&worldTransform, bounds); 1091 } 1092 1093 HRESULT GetWidenedBounds(FLOAT strokeWidth, ID2D1StrokeStyle *strokeStyle, const D2D1_MATRIX_3X2_F &worldTransform, FLOAT flatteningTolerance, D2D1_RECT_F *bounds) const { 1094 return GetWidenedBounds(strokeWidth, strokeStyle, &worldTransform, flatteningTolerance, bounds); 1095 } 1096 1097 HRESULT GetWidenedBounds(FLOAT strokeWidth, ID2D1StrokeStyle *strokeStyle, const D2D1_MATRIX_3X2_F *worldTransform, D2D1_RECT_F *bounds) const { 1098 return GetWidenedBounds(strokeWidth, strokeStyle, worldTransform, D2D1_DEFAULT_FLATTENING_TOLERANCE, bounds); 1099 } 1100 1101 HRESULT GetWidenedBounds(FLOAT strokeWidth, ID2D1StrokeStyle *strokeStyle, const D2D1_MATRIX_3X2_F &worldTransform, D2D1_RECT_F *bounds) const { 1102 return GetWidenedBounds(strokeWidth, strokeStyle, &worldTransform, D2D1_DEFAULT_FLATTENING_TOLERANCE, bounds); 1103 } 1104 1105 HRESULT StrokeContainsPoint(D2D1_POINT_2F point, FLOAT strokeWidth, ID2D1StrokeStyle *strokeStyle, const D2D1_MATRIX_3X2_F &worldTransform, FLOAT flatteningTolerance, BOOL *contains) const { 1106 return StrokeContainsPoint(point, strokeWidth, strokeStyle, &worldTransform, flatteningTolerance, contains); 1107 } 1108 1109 HRESULT StrokeContainsPoint(D2D1_POINT_2F point, FLOAT strokeWidth, ID2D1StrokeStyle *strokeStyle, const D2D1_MATRIX_3X2_F *worldTransform, BOOL *contains) const { 1110 return StrokeContainsPoint(point, strokeWidth, strokeStyle, worldTransform, D2D1_DEFAULT_FLATTENING_TOLERANCE, contains); 1111 } 1112 1113 HRESULT StrokeContainsPoint(D2D1_POINT_2F point, FLOAT strokeWidth, ID2D1StrokeStyle *strokeStyle, const D2D1_MATRIX_3X2_F &worldTransform, BOOL *contains) const { 1114 return StrokeContainsPoint(point, strokeWidth, strokeStyle, &worldTransform, D2D1_DEFAULT_FLATTENING_TOLERANCE, contains); 1115 } 1116 1117 HRESULT FillContainsPoint(D2D1_POINT_2F point, const D2D1_MATRIX_3X2_F &worldTransform, FLOAT flatteningTolerance, BOOL *contains) const { 1118 return FillContainsPoint(point, &worldTransform, flatteningTolerance, contains); 1119 } 1120 1121 HRESULT FillContainsPoint(D2D1_POINT_2F point, const D2D1_MATRIX_3X2_F *worldTransform, BOOL *contains) const { 1122 return FillContainsPoint(point, worldTransform, D2D1_DEFAULT_FLATTENING_TOLERANCE, contains); 1123 } 1124 1125 HRESULT FillContainsPoint(D2D1_POINT_2F point, const D2D1_MATRIX_3X2_F &worldTransform, BOOL *contains) const { 1126 return FillContainsPoint(point, &worldTransform, D2D1_DEFAULT_FLATTENING_TOLERANCE, contains); 1127 } 1128 1129 HRESULT CompareWithGeometry(ID2D1Geometry *inputGeometry, const D2D1_MATRIX_3X2_F &inputGeometryTransform, FLOAT flatteningTolerance, D2D1_GEOMETRY_RELATION *relation) const { 1130 return CompareWithGeometry(inputGeometry, &inputGeometryTransform, flatteningTolerance, relation); 1131 } 1132 1133 HRESULT CompareWithGeometry(ID2D1Geometry *inputGeometry, const D2D1_MATRIX_3X2_F *inputGeometryTransform, D2D1_GEOMETRY_RELATION *relation) const { 1134 return CompareWithGeometry(inputGeometry, inputGeometryTransform, D2D1_DEFAULT_FLATTENING_TOLERANCE, relation); 1135 } 1136 1137 HRESULT CompareWithGeometry(ID2D1Geometry *inputGeometry, const D2D1_MATRIX_3X2_F &inputGeometryTransform, D2D1_GEOMETRY_RELATION *relation) const { 1138 return CompareWithGeometry(inputGeometry, &inputGeometryTransform, D2D1_DEFAULT_FLATTENING_TOLERANCE, relation); 1139 } 1140 1141 HRESULT Simplify(D2D1_GEOMETRY_SIMPLIFICATION_OPTION simplificationOption, const D2D1_MATRIX_3X2_F &worldTransform, FLOAT flatteningTolerance, ID2D1SimplifiedGeometrySink *geometrySink) const { 1142 return Simplify(simplificationOption, &worldTransform, flatteningTolerance, geometrySink); 1143 } 1144 1145 HRESULT Simplify(D2D1_GEOMETRY_SIMPLIFICATION_OPTION simplificationOption, const D2D1_MATRIX_3X2_F *worldTransform, ID2D1SimplifiedGeometrySink *geometrySink) const { 1146 return Simplify(simplificationOption, worldTransform, D2D1_DEFAULT_FLATTENING_TOLERANCE, geometrySink); 1147 } 1148 1149 HRESULT Simplify(D2D1_GEOMETRY_SIMPLIFICATION_OPTION simplificationOption, const D2D1_MATRIX_3X2_F &worldTransform, ID2D1SimplifiedGeometrySink *geometrySink) const { 1150 return Simplify(simplificationOption, &worldTransform, D2D1_DEFAULT_FLATTENING_TOLERANCE, geometrySink); 1151 } 1152 1153 HRESULT Tessellate(const D2D1_MATRIX_3X2_F &worldTransform, FLOAT flatteningTolerance, ID2D1TessellationSink *tessellationSink) const { 1154 return Tessellate(&worldTransform, flatteningTolerance, tessellationSink); 1155 } 1156 1157 HRESULT Tessellate(const D2D1_MATRIX_3X2_F *worldTransform, ID2D1TessellationSink *tessellationSink) const { 1158 return Tessellate(worldTransform, D2D1_DEFAULT_FLATTENING_TOLERANCE, tessellationSink); 1159 } 1160 1161 HRESULT Tessellate(const D2D1_MATRIX_3X2_F &worldTransform, ID2D1TessellationSink *tessellationSink) const { 1162 return Tessellate(&worldTransform, D2D1_DEFAULT_FLATTENING_TOLERANCE, tessellationSink); 1163 } 1164 1165 HRESULT CombineWithGeometry(ID2D1Geometry *inputGeometry, D2D1_COMBINE_MODE combineMode, const D2D1_MATRIX_3X2_F &inputGeometryTransform, FLOAT flatteningTolerance, ID2D1SimplifiedGeometrySink *geometrySink) const { 1166 return CombineWithGeometry(inputGeometry, combineMode, &inputGeometryTransform, flatteningTolerance, geometrySink); 1167 } 1168 1169 HRESULT CombineWithGeometry(ID2D1Geometry *inputGeometry, D2D1_COMBINE_MODE combineMode, CONST D2D1_MATRIX_3X2_F *inputGeometryTransform, ID2D1SimplifiedGeometrySink *geometrySink) const { 1170 return CombineWithGeometry(inputGeometry, combineMode, inputGeometryTransform, D2D1_DEFAULT_FLATTENING_TOLERANCE, geometrySink); 1171 } 1172 1173 HRESULT CombineWithGeometry(ID2D1Geometry *inputGeometry, D2D1_COMBINE_MODE combineMode, const D2D1_MATRIX_3X2_F &inputGeometryTransform, ID2D1SimplifiedGeometrySink *geometrySink) const { 1174 return CombineWithGeometry(inputGeometry, combineMode, &inputGeometryTransform, D2D1_DEFAULT_FLATTENING_TOLERANCE, geometrySink); 1175 } 1176 1177 HRESULT Outline(const D2D1_MATRIX_3X2_F &worldTransform, FLOAT flatteningTolerance, ID2D1SimplifiedGeometrySink *geometrySink) const { 1178 return Outline(&worldTransform, flatteningTolerance, geometrySink); 1179 } 1180 1181 HRESULT Outline(const D2D1_MATRIX_3X2_F *worldTransform, ID2D1SimplifiedGeometrySink *geometrySink) const { 1182 return Outline(worldTransform, D2D1_DEFAULT_FLATTENING_TOLERANCE, geometrySink); 1183 } 1184 1185 HRESULT Outline(const D2D1_MATRIX_3X2_F &worldTransform, ID2D1SimplifiedGeometrySink *geometrySink) const { 1186 return Outline(&worldTransform, D2D1_DEFAULT_FLATTENING_TOLERANCE, geometrySink); 1187 } 1188 1189 HRESULT ComputeArea(const D2D1_MATRIX_3X2_F &worldTransform, FLOAT flatteningTolerance, FLOAT *area) const { 1190 return ComputeArea(&worldTransform, flatteningTolerance, area); 1191 } 1192 1193 HRESULT ComputeArea(const D2D1_MATRIX_3X2_F *worldTransform, FLOAT *area) const { 1194 return ComputeArea(worldTransform, D2D1_DEFAULT_FLATTENING_TOLERANCE, area); 1195 } 1196 1197 HRESULT ComputeArea(const D2D1_MATRIX_3X2_F &worldTransform, FLOAT *area) const { 1198 return ComputeArea(&worldTransform, D2D1_DEFAULT_FLATTENING_TOLERANCE, area); 1199 } 1200 1201 HRESULT ComputeLength(const D2D1_MATRIX_3X2_F &worldTransform, FLOAT flatteningTolerance, FLOAT *length) const { 1202 return ComputeLength(&worldTransform, flatteningTolerance, length); 1203 } 1204 1205 HRESULT ComputeLength(const D2D1_MATRIX_3X2_F *worldTransform, FLOAT *length) const { 1206 return ComputeLength(worldTransform, D2D1_DEFAULT_FLATTENING_TOLERANCE, length); 1207 } 1208 1209 HRESULT ComputeLength(const D2D1_MATRIX_3X2_F &worldTransform, FLOAT *length) const { 1210 return ComputeLength(&worldTransform, D2D1_DEFAULT_FLATTENING_TOLERANCE, length); 1211 } 1212 1213 HRESULT ComputePointAtLength(FLOAT length, const D2D1_MATRIX_3X2_F &worldTransform, FLOAT flatteningTolerance, D2D1_POINT_2F *point, D2D1_POINT_2F *unitTangentVector) const { 1214 return ComputePointAtLength(length, &worldTransform, flatteningTolerance, point, unitTangentVector); 1215 } 1216 1217 HRESULT ComputePointAtLength(FLOAT length, const D2D1_MATRIX_3X2_F *worldTransform, D2D1_POINT_2F *point, D2D1_POINT_2F *unitTangentVector) const { 1218 return ComputePointAtLength(length, worldTransform, D2D1_DEFAULT_FLATTENING_TOLERANCE, point, unitTangentVector); 1219 } 1220 1221 HRESULT ComputePointAtLength(FLOAT length, const D2D1_MATRIX_3X2_F &worldTransform, D2D1_POINT_2F *point, D2D1_POINT_2F *unitTangentVector) const { 1222 return ComputePointAtLength(length, &worldTransform, D2D1_DEFAULT_FLATTENING_TOLERANCE, point, unitTangentVector); 1223 } 1224 1225 HRESULT Widen(FLOAT strokeWidth, ID2D1StrokeStyle *strokeStyle, const D2D1_MATRIX_3X2_F &worldTransform, FLOAT flatteningTolerance, ID2D1SimplifiedGeometrySink *geometrySink) const { 1226 return Widen(strokeWidth, strokeStyle, &worldTransform, flatteningTolerance, geometrySink); 1227 } 1228 1229 HRESULT Widen(FLOAT strokeWidth, ID2D1StrokeStyle *strokeStyle, const D2D1_MATRIX_3X2_F *worldTransform, ID2D1SimplifiedGeometrySink *geometrySink) const { 1230 return Widen(strokeWidth, strokeStyle, worldTransform, D2D1_DEFAULT_FLATTENING_TOLERANCE, geometrySink); 1231 } 1232 1233 HRESULT Widen(FLOAT strokeWidth, ID2D1StrokeStyle *strokeStyle, const D2D1_MATRIX_3X2_F &worldTransform, ID2D1SimplifiedGeometrySink *geometrySink) const { 1234 return Widen(strokeWidth, strokeStyle, &worldTransform, D2D1_DEFAULT_FLATTENING_TOLERANCE, geometrySink); 1235 } 1236 }; 1237 1238 #else 1239 1240 typedef struct ID2D1GeometryVtbl { 1241 ID2D1ResourceVtbl Base; 1242 1243 STDMETHOD(GetBounds)(ID2D1Geometry *This, const D2D1_MATRIX_3X2_F *worldTransform, D2D1_RECT_F *bounds) PURE; 1244 STDMETHOD(GetWidenedBounds)(ID2D1Geometry *This, FLOAT strokeWidth, ID2D1StrokeStyle *strokeStyle, const D2D1_MATRIX_3X2_F *worldTransform, FLOAT flatteningTolerance, D2D1_RECT_F *bounds) PURE; 1245 STDMETHOD(StrokeContainsPoint)(ID2D1Geometry *This, D2D1_POINT_2F point, FLOAT strokeWidth, ID2D1StrokeStyle *strokeStyle, const D2D1_MATRIX_3X2_F *worldTransform, FLOAT flatteningTolerance, BOOL *contains) PURE; 1246 STDMETHOD(FillContainsPoint)(ID2D1Geometry *This, D2D1_POINT_2F point, const D2D1_MATRIX_3X2_F *worldTransform, FLOAT flatteningTolerance, BOOL *contains) PURE; 1247 STDMETHOD(CompareWithGeometry)(ID2D1Geometry *This, ID2D1Geometry *inputGeometry, const D2D1_MATRIX_3X2_F *inputGeometryTransform, FLOAT flatteningTolerance, D2D1_GEOMETRY_RELATION *relation) PURE; 1248 STDMETHOD(Simplify)(ID2D1Geometry *This, D2D1_GEOMETRY_SIMPLIFICATION_OPTION simplificationOption, const D2D1_MATRIX_3X2_F *worldTransform, FLOAT flatteningTolerance, ID2D1SimplifiedGeometrySink *geometrySink) PURE; 1249 STDMETHOD(Tessellate)(ID2D1Geometry *This, const D2D1_MATRIX_3X2_F *worldTransform, FLOAT flatteningTolerance, ID2D1TessellationSink *tessellationSink) PURE; 1250 STDMETHOD(CombineWithGeometry)(ID2D1Geometry *This, ID2D1Geometry *inputGeometry, D2D1_COMBINE_MODE combineMode, const D2D1_MATRIX_3X2_F *inputGeometryTransform, FLOAT flatteningTolerance, ID2D1SimplifiedGeometrySink *geometrySink) PURE; 1251 STDMETHOD(Outline)(ID2D1Geometry *This, const D2D1_MATRIX_3X2_F *worldTransform, FLOAT flatteningTolerance, ID2D1SimplifiedGeometrySink *geometrySink) PURE; 1252 STDMETHOD(ComputeArea)(ID2D1Geometry *This, const D2D1_MATRIX_3X2_F *worldTransform, FLOAT flatteningTolerance, FLOAT *area) PURE; 1253 STDMETHOD(ComputeLength)(ID2D1Geometry *This, const D2D1_MATRIX_3X2_F *worldTransform, FLOAT flatteningTolerance, FLOAT *length) PURE; 1254 STDMETHOD(ComputePointAtLength)(ID2D1Geometry *This, FLOAT length, const D2D1_MATRIX_3X2_F *worldTransform, FLOAT flatteningTolerance, D2D1_POINT_2F *point, D2D1_POINT_2F *unitTangentVector) PURE; 1255 STDMETHOD(Widen)(ID2D1Geometry *This, FLOAT strokeWidth, ID2D1StrokeStyle *strokeStyle, const D2D1_MATRIX_3X2_F *worldTransform, FLOAT flatteningTolerance, ID2D1SimplifiedGeometrySink *geometrySink) PURE; 1256 } ID2D1GeometryVtbl; 1257 1258 interface ID2D1Geometry { 1259 const ID2D1GeometryVtbl *lpVtbl; 1260 }; 1261 1262 #define ID2D1Geometry_QueryInterface(this,A,B) (this)->lpVtbl->Base.Base.QueryInterface((IUnknown*)(this),A,B) 1263 #define ID2D1Geometry_AddRef(this) (this)->lpVtbl->Base.Base.AddRef((IUnknown*)(this)) 1264 #define ID2D1Geometry_Release(this) (this)->lpVtbl->Base.Base.Release((IUnknown*)(this)) 1265 #define ID2D1Geometry_GetFactory(this,A) (this)->lpVtbl->Base.GetFactory((ID2D1Resource*)(this),A) 1266 #define ID2D1Geometry_GetBounds(this,A,B) (this)->lpVtbl->GetBounds(this,A,B) 1267 #define ID2D1Geometry_GetWidenedBounds(this,A,B,C,D,E) (this)->lpVtbl->GetWidenedBounds(this,A,B,C,D,E) 1268 #define ID2D1Geometry_StrokeContainsPoint(this,A,B,C,D,E,F) (this)->lpVtbl->StrokeContainsPoint(this,A,B,C,D,E,F) 1269 #define ID2D1Geometry_FillContainsPoint(this,A,B,C,D) (this)->lpVtbl->FillContainsPoint(this,A,B,C,D) 1270 #define ID2D1Geometry_CompareWithGeometry(this,A,B,C,D) (this)->lpVtbl->CompareWithGeometry(this,A,B,C,D) 1271 #define ID2D1Geometry_Simplify(this,A,B,C,D) (this)->lpVtbl->Simplify(this,A,B,C,D) 1272 #define ID2D1Geometry_Tessellate(this,A,B,C) (this)->lpVtbl->Tessellate(this,A,B,C) 1273 #define ID2D1Geometry_CombineWithGeometry(this,A,B,C,D,E) (this)->lpVtbl->CombineWithGeometry(this,A,B,C,D,E) 1274 #define ID2D1Geometry_Outline(this,A,B,C) (this)->lpVtbl->Outline(this,A,B,C) 1275 #define ID2D1Geometry_ComputeArea(this,A,B,C) (this)->lpVtbl->ComputeArea(this,A,B,C) 1276 #define ID2D1Geometry_ComputeLength(this,A,B,C) (this)->lpVtbl->ComputeLength(this,A,B,C) 1277 #define ID2D1Geometry_ComputePointAtLength(this,A,B,C,D,E) (this)->lpVtbl->ComputePointAtLength(this,A,B,C,D,E) 1278 #define ID2D1Geometry_Widen(this,A,B,C,D,E) (this)->lpVtbl->Widen(this,A,B,C,D,E) 1279 1280 #endif 1281 1282 DEFINE_GUID(IID_ID2D1BitmapRenderTarget, 0x2cd90695,0x12e2,0x11dc,0x9f,0xed,0x00,0x11,0x43,0xa0,0x55,0xf9); 1283 1284 #ifndef D2D_USE_C_DEFINITIONS 1285 1286 interface ID2D1BitmapRenderTarget : public ID2D1RenderTarget { 1287 STDMETHOD(GetBitmap)(ID2D1Bitmap **bitmap) PURE; 1288 }; 1289 1290 #else 1291 1292 typedef struct ID2D1BitmapRenderTargetVtbl { 1293 ID2D1RenderTargetVtbl Base; 1294 1295 STDMETHOD(GetBitmap)(ID2D1BitmapRenderTarget *This, ID2D1Bitmap **bitmap) PURE; 1296 } ID2D1BitmapRenderTargetVtbl; 1297 1298 interface ID2D1BitmapRenderTarget { 1299 const ID2D1BitmapRenderTargetVtbl *lpVtbl; 1300 }; 1301 1302 #define ID2D1BitmapRenderTarget_QueryInterface(this,A,B) (this)->lpVtbl->Base.Base.Base.QueryInterface((IUnknown*)(this),A,B) 1303 #define ID2D1BitmapRenderTarget_AddRef(this) (this)->lpVtbl->Base.Base.Base.AddRef((IUnknown*)(this)) 1304 #define ID2D1BitmapRenderTarget_Release(this) (this)->lpVtbl->Base.Base.Base.Release((IUnknown*)(this)) 1305 #define ID2D1BitmapRenderTarget_GetFactory(this,A) (this)->lpVtbl->Base.Base.GetFactory((ID2D1Resource*)(this),A) 1306 #define ID2D1BitmapRenderTarget_BeginDraw(this) (this)->lpVtbl->Base.BeginDraw((ID2D1RenderTarget*)(this)) 1307 #define ID2D1BitmapRenderTarget_Clear(this,A) (this)->lpVtbl->Base.Clear((ID2D1RenderTarget*)(this),A) 1308 #define ID2D1BitmapRenderTarget_CreateBitmap(this,A,B,C,D,E) (this)->lpVtbl->Base.CreateBitmap((ID2D1RenderTarget*)(this),A,B,C,D,E) 1309 #define ID2D1BitmapRenderTarget_CreateBitmapBrush(this,A,B) (this)->lpVtbl->Base.CreateBitmapBrush((ID2D1RenderTarget*)(this),A,B) 1310 #define ID2D1BitmapRenderTarget_CreateBitmapFromWicBitmap(this,A,B,C) (this)->lpVtbl->Base.CreateBitmapFromWicBitmap((ID2D1RenderTarget*)(this),A,B,C) 1311 #define ID2D1BitmapRenderTarget_CreateCompatibleBitmapRenderTarget(this,A,B,C,D,E) (this)->lpVtbl->Base.CreateCompatibleBitmapRenderTarget((ID2D1RenderTarget*)(this),A,B,C,D,E) 1312 #define ID2D1BitmapRenderTarget_CreateGradientStopCollection(this,A,B,C) (this)->lpVtbl->Base.CreateGradientStopCollection((ID2D1RenderTarget*)(this),A,B,C) 1313 #define ID2D1BitmapRenderTarget_CreateLayer(this,A,B) (this)->lpVtbl->Base.CreateLayer((ID2D1RenderTarget*)(this),A,B) 1314 #define ID2D1BitmapRenderTarget_CreateLinearGradientBrush(this,A,B,C,D) (this)->lpVtbl->Base.CreateLinearGradientBrush((ID2D1RenderTarget*)(this),A,B,C,D) 1315 #define ID2D1BitmapRenderTarget_CreateMesh(this,A) (this)->lpVtbl->Base.CreateMesh((ID2D1RenderTarget*)(this),A) 1316 #define ID2D1BitmapRenderTarget_CreateRadialGradientBrush(this,A,B,C,D) (this)->lpVtbl->Base.CreateRadialGradientBrush((ID2D1RenderTarget*)(this),A,B,C,D) 1317 #define ID2D1BitmapRenderTarget_CreateSharedBitmap(this,A,B,C,D) (this)->lpVtbl->Base.CreateSharedBitmap((ID2D1RenderTarget*)(this),A,B,C,D) 1318 #define ID2D1BitmapRenderTarget_CreateSolidColorBrush(this,A,B,C) (this)->lpVtbl->Base.CreateSolidColorBrush((ID2D1RenderTarget*)(this),A,B,C) 1319 #define ID2D1BitmapRenderTarget_DrawBitmap(this,A,B,C,D,E) (this)->lpVtbl->Base.DrawBitmap((ID2D1RenderTarget*)(this),A,B,C,D,E) 1320 #define ID2D1BitmapRenderTarget_DrawEllipse(this,A,B,C,D) (this)->lpVtbl->Base.DrawEllipse((ID2D1RenderTarget*)(this),A,B,C,D) 1321 #define ID2D1BitmapRenderTarget_DrawGeometry(this,A,B,C,D) (this)->lpVtbl->Base.DrawGeometry((ID2D1RenderTarget*)(this),A,B,C,D) 1322 #define ID2D1BitmapRenderTarget_DrawGlyphRun(this,A,B,C,D) (this)->lpVtbl->Base.DrawGlyphRun((ID2D1RenderTarget*)(this),A,B,C,D) 1323 #define ID2D1BitmapRenderTarget_DrawLine(this,A,B,C,D,E) (this)->lpVtbl->Base.DrawLine((ID2D1RenderTarget*)(this),A,B,C,D,E) 1324 #define ID2D1BitmapRenderTarget_DrawRectangle(this,A,B,C,D) (this)->lpVtbl->Base.DrawRectangle((ID2D1RenderTarget*)(this),A,B,C,D) 1325 #define ID2D1BitmapRenderTarget_DrawRoundedRectangle(this,A,B,C,D) (this)->lpVtbl->Base.DrawRoundedRectangle((ID2D1RenderTarget*)(this),A,B,C,D) 1326 #define ID2D1BitmapRenderTarget_DrawText(this,A,B,C,D,E,F,G) (this)->lpVtbl->Base.DrawText((ID2D1RenderTarget*)(this),A,B,C,D,E,F,G) 1327 #define ID2D1BitmapRenderTarget_DrawTextLayout(this,A,B,C,D) (this)->lpVtbl->Base.DrawTextLayout((ID2D1RenderTarget*)(this),A,B,C,D) 1328 #define ID2D1BitmapRenderTarget_EndDraw(this,A,B) (this)->lpVtbl->Base.EndDraw((ID2D1RenderTarget*)(this),A,B) 1329 #define ID2D1BitmapRenderTarget_FillEllipse(this,A,B) (this)->lpVtbl->Base.FillEllipse((ID2D1RenderTarget*)(this),A,B) 1330 #define ID2D1BitmapRenderTarget_FillGeometry(this,A,B,C) (this)->lpVtbl->Base.FillGeometry((ID2D1RenderTarget*)(this),A,B,C) 1331 #define ID2D1BitmapRenderTarget_FillMesh(this,A,B) (this)->lpVtbl->Base.FillMesh((ID2D1RenderTarget*)(this),A,B) 1332 #define ID2D1BitmapRenderTarget_FillOpacityMask(this,A,B,C,D,E) (this)->lpVtbl->Base.FillOpacityMask((ID2D1RenderTarget*)(this),A,B,C,D,E) 1333 #define ID2D1BitmapRenderTarget_FillRectangle(this,A,B) (this)->lpVtbl->Base.FillRectangle((ID2D1RenderTarget*)(this),A,B) 1334 #define ID2D1BitmapRenderTarget_FillRoundedRectangle(this,A,B) (this)->lpVtbl->Base.FillRoundedRectangle((ID2D1RenderTarget*)(this),A,B) 1335 #define ID2D1BitmapRenderTarget_Flush(this,A,B) (this)->lpVtbl->Base.Flush((ID2D1RenderTarget*)(this),A,B) 1336 #define ID2D1BitmapRenderTarget_GetAntialiasMode(this) (this)->lpVtbl->Base.GetAntialiasMode((ID2D1RenderTarget*)(this)) 1337 #define ID2D1BitmapRenderTarget_GetDpi(this,A,B) (this)->lpVtbl->Base.GetDpi((ID2D1RenderTarget*)(this),A,B) 1338 #define ID2D1BitmapRenderTarget_GetMaximumBitmapSize(this) (this)->lpVtbl->Base.GetMaximumBitmapSize((ID2D1RenderTarget*)(this)) 1339 #define ID2D1BitmapRenderTarget_GetPixelFormat(this) (this)->lpVtbl->Base.GetPixelFormat((ID2D1RenderTarget*)(this)) 1340 #define ID2D1BitmapRenderTarget_GetPixelSize(this) (this)->lpVtbl->Base.GetPixelSize((ID2D1RenderTarget*)(this)) 1341 #define ID2D1BitmapRenderTarget_GetSize(this) (this)->lpVtbl->Base.GetSize((ID2D1RenderTarget*)(this)) 1342 #define ID2D1BitmapRenderTarget_GetTags(this,A,B) (this)->lpVtbl->Base.GetTags((ID2D1RenderTarget*)(this),A,B) 1343 #define ID2D1BitmapRenderTarget_GetTextAntialiasMode(this) (this)->lpVtbl->Base.GetTextAntialiasMode((ID2D1RenderTarget*)(this)) 1344 #define ID2D1BitmapRenderTarget_GetTextRenderingParams(this,A) (this)->lpVtbl->Base.GetTextRenderingParams((ID2D1RenderTarget*)(this),A) 1345 #define ID2D1BitmapRenderTarget_GetTransform(this,A) (this)->lpVtbl->Base.GetTransform((ID2D1RenderTarget*)(this),A) 1346 #define ID2D1BitmapRenderTarget_IsSupported(this,A) (this)->lpVtbl->Base.IsSupported((ID2D1RenderTarget*)(this),A) 1347 #define ID2D1BitmapRenderTarget_PopAxisAlignedClip(this) (this)->lpVtbl->Base.PopAxisAlignedClip((ID2D1RenderTarget*)(this)) 1348 #define ID2D1BitmapRenderTarget_PopLayer(this) (this)->lpVtbl->Base.PopLayer((ID2D1RenderTarget*)(this)) 1349 #define ID2D1BitmapRenderTarget_PushAxisAlignedClip(this,A,B) (this)->lpVtbl->Base.PushAxisAlignedClip((ID2D1RenderTarget*)(this),A,B) 1350 #define ID2D1BitmapRenderTarget_PushLayer(this,A,B) (this)->lpVtbl->Base.PushLayer((ID2D1RenderTarget*)(this),A,B) 1351 #define ID2D1BitmapRenderTarget_RestoreDrawingState(this,A) (this)->lpVtbl->Base.RestoreDrawingState((ID2D1RenderTarget*)(this),A) 1352 #define ID2D1BitmapRenderTarget_SaveDrawingState(this,A) (this)->lpVtbl->Base.SaveDrawingState((ID2D1RenderTarget*)(this),A) 1353 #define ID2D1BitmapRenderTarget_SetAntialiasMode(this,A) (this)->lpVtbl->Base.SetAntialiasMode((ID2D1RenderTarget*)(this),A) 1354 #define ID2D1BitmapRenderTarget_SetDpi(this,A,B) (this)->lpVtbl->Base.SetDpi((ID2D1RenderTarget*)(this),A,B) 1355 #define ID2D1BitmapRenderTarget_SetTags(this,A,B) (this)->lpVtbl->Base.SetTags((ID2D1RenderTarget*)(this),A,B) 1356 #define ID2D1BitmapRenderTarget_SetTextAntialiasMode(this,A) (this)->lpVtbl->Base.SetTextAntialiasMode((ID2D1RenderTarget*)(this),A) 1357 #define ID2D1BitmapRenderTarget_SetTextRenderingParams(this,A) (this)->lpVtbl->Base.SetTextRenderingParams((ID2D1RenderTarget*)(this),A) 1358 #define ID2D1BitmapRenderTarget_SetTransform(this,A) (this)->lpVtbl->Base.SetTransform((ID2D1RenderTarget*)(this),A) 1359 #define ID2D1BitmapRenderTarget_GetBitmap(this,A) (this)->lpVtbl->GetBitmap(this,A) 1360 1361 #endif 1362 1363 DEFINE_GUID(IID_ID2D1DCRenderTarget, 0x1c51bc64,0xde61,0x46fd,0x98,0x99,0x63,0xa5,0xd8,0xf0,0x39,0x50); 1364 1365 #ifndef D2D_USE_C_DEFINITIONS 1366 1367 interface ID2D1DCRenderTarget : public ID2D1RenderTarget { 1368 STDMETHOD(BindDC)(const HDC hDC, const RECT *pSubRect) PURE; 1369 }; 1370 1371 #else 1372 1373 typedef struct ID2D1DCRenderTargetVtbl { 1374 ID2D1RenderTargetVtbl Base; 1375 1376 STDMETHOD(BindDC)(ID2D1DCRenderTarget *This, const HDC hDC, const RECT *pSubRect) PURE; 1377 } ID2D1DCRenderTargetVtbl; 1378 1379 interface ID2D1DCRenderTarget 1380 { 1381 const ID2D1DCRenderTargetVtbl *lpVtbl; 1382 }; 1383 1384 #define ID2D1DCRenderTarget_QueryInterface(this,A,B) (this)->lpVtbl->Base.Base.Base.QueryInterface((IUnknown*)(this),A,B) 1385 #define ID2D1DCRenderTarget_AddRef(this) (this)->lpVtbl->Base.Base.Base.AddRef((IUnknown*)(this)) 1386 #define ID2D1DCRenderTarget_Release(this) (this)->lpVtbl->Base.Base.Base.Release((IUnknown*)(this)) 1387 #define ID2D1DCRenderTarget_GetFactory(this,A) (this)->lpVtbl->Base.Base.GetFactory((ID2D1Resource*)(this),A) 1388 #define ID2D1DCRenderTarget_BeginDraw(this) (this)->lpVtbl->Base.BeginDraw((ID2D1RenderTarget*)(this)) 1389 #define ID2D1DCRenderTarget_Clear(this,A) (this)->lpVtbl->Base.Clear((ID2D1RenderTarget*)(this),A) 1390 #define ID2D1DCRenderTarget_CreateBitmap(this,A,B,C,D,E) (this)->lpVtbl->Base.CreateBitmap((ID2D1RenderTarget*)(this),A,B,C,D,E) 1391 #define ID2D1DCRenderTarget_CreateBitmapBrush(this,A,B) (this)->lpVtbl->Base.CreateBitmapBrush((ID2D1RenderTarget*)(this),A,B) 1392 #define ID2D1DCRenderTarget_CreateBitmapFromWicBitmap(this,A,B,C) (this)->lpVtbl->Base.CreateBitmapFromWicBitmap((ID2D1RenderTarget*)(this),A,B,C) 1393 #define ID2D1DCRenderTarget_CreateCompatibleRenderTarget(this,A,B,C,D,E) (this)->lpVtbl->Base.CreateCompatibleRenderTarget((ID2D1RenderTarget*)(this),A,B,C,D,E) 1394 #define ID2D1DCRenderTarget_CreateGradientStopCollection(this,A,B,C) (this)->lpVtbl->Base.CreateGradientStopCollection((ID2D1RenderTarget*)(this),A,B,C) 1395 #define ID2D1DCRenderTarget_CreateLayer(this,A,B) (this)->lpVtbl->Base.CreateLayer((ID2D1RenderTarget*)(this),A,B) 1396 #define ID2D1DCRenderTarget_CreateLinearGradientBrush(this,A,B,C,D) (this)->lpVtbl->Base.CreateLinearGradientBrush((ID2D1RenderTarget*)(this),A,B,C,D) 1397 #define ID2D1DCRenderTarget_CreateMesh(this,A) (this)->lpVtbl->Base.CreateMesh((ID2D1RenderTarget*)(this),A) 1398 #define ID2D1DCRenderTarget_CreateRadialGradientBrush(this,A,B,C,D) (this)->lpVtbl->Base.CreateRadialGradientBrush((ID2D1RenderTarget*)(this),A,B,C,D) 1399 #define ID2D1DCRenderTarget_CreateSharedBitmap(this,A,B,C,D) (this)->lpVtbl->Base.CreateSharedBitmap((ID2D1RenderTarget*)(this),A,B,C,D) 1400 #define ID2D1DCRenderTarget_CreateSolidColorBrush(this,A,B,C) (this)->lpVtbl->Base.CreateSolidColorBrush((ID2D1RenderTarget*)(this),A,B,C) 1401 #define ID2D1DCRenderTarget_DrawBitmap(this,A,B,C,D,E) (this)->lpVtbl->Base.DrawBitmap((ID2D1RenderTarget*)(this),A,B,C,D,E) 1402 #define ID2D1DCRenderTarget_DrawEllipse(this,A,B,C,D) (this)->lpVtbl->Base.DrawEllipse((ID2D1RenderTarget*)(this),A,B,C,D) 1403 #define ID2D1DCRenderTarget_DrawGeometry(this,A,B,C,D) (this)->lpVtbl->Base.DrawGeometry((ID2D1RenderTarget*)(this),A,B,C,D) 1404 #define ID2D1DCRenderTarget_DrawGlyphRun(this,A,B,C,D) (this)->lpVtbl->Base.DrawGlyphRun((ID2D1RenderTarget*)(this),A,B,C,D) 1405 #define ID2D1DCRenderTarget_DrawLine(this,A,B,C,D,E) (this)->lpVtbl->Base.DrawLine((ID2D1RenderTarget*)(this),A,B,C,D,E) 1406 #define ID2D1DCRenderTarget_DrawRectangle(this,A,B,C,D) (this)->lpVtbl->Base.DrawRectangle((ID2D1RenderTarget*)(this),A,B,C,D) 1407 #define ID2D1DCRenderTarget_DrawRoundedRectangle(this,A,B,C,D) (this)->lpVtbl->Base.DrawRoundedRectangle((ID2D1RenderTarget*)(this),A,B,C,D) 1408 #define ID2D1DCRenderTarget_DrawText(this,A,B,C,D,E,F,G) (this)->lpVtbl->Base.DrawText((ID2D1RenderTarget*)(this),A,B,C,D,E,F,G) 1409 #define ID2D1DCRenderTarget_DrawTextLayout(this,A,B,C,D) (this)->lpVtbl->Base.DrawTextLayout((ID2D1RenderTarget*)(this),A,B,C,D) 1410 #define ID2D1DCRenderTarget_EndDraw(this,A,B) (this)->lpVtbl->Base.EndDraw((ID2D1RenderTarget*)(this),A,B) 1411 #define ID2D1DCRenderTarget_FillEllipse(this,A,B) (this)->lpVtbl->Base.FillEllipse((ID2D1RenderTarget*)(this),A,B) 1412 #define ID2D1DCRenderTarget_FillGeometry(this,A,B,C) (this)->lpVtbl->Base.FillGeometry((ID2D1RenderTarget*)(this),A,B,C) 1413 #define ID2D1DCRenderTarget_FillMesh(this,A,B) (this)->lpVtbl->Base.FillMesh((ID2D1RenderTarget*)(this),A,B) 1414 #define ID2D1DCRenderTarget_FillOpacityMask(this,A,B,C,D,E) (this)->lpVtbl->Base.FillOpacityMask((ID2D1RenderTarget*)(this),A,B,C,D,E) 1415 #define ID2D1DCRenderTarget_FillRectangle(this,A,B) (this)->lpVtbl->Base.FillRectangle((ID2D1RenderTarget*)(this),A,B) 1416 #define ID2D1DCRenderTarget_FillRoundedRectangle(this,A,B) (this)->lpVtbl->Base.FillRoundedRectangle((ID2D1RenderTarget*)(this),A,B) 1417 #define ID2D1DCRenderTarget_Flush(this,A,B) (this)->lpVtbl->Base.Flush((ID2D1RenderTarget*)(this),A,B) 1418 #define ID2D1DCRenderTarget_GetAntialiasMode(this) (this)->lpVtbl->Base.GetAntialiasMode((ID2D1RenderTarget*)(this)) 1419 #define ID2D1DCRenderTarget_GetDpi(this,A,B) (this)->lpVtbl->Base.GetDpi((ID2D1RenderTarget*)(this),A,B) 1420 #define ID2D1DCRenderTarget_GetMaximumBitmapSize(this) (this)->lpVtbl->Base.GetMaximumBitmapSize((ID2D1RenderTarget*)(this)) 1421 #define ID2D1DCRenderTarget_GetPixelFormat(this) (this)->lpVtbl->Base.GetPixelFormat((ID2D1RenderTarget*)(this)) 1422 #define ID2D1DCRenderTarget_GetPixelSize(this) (this)->lpVtbl->Base.GetPixelSize((ID2D1RenderTarget*)(this)) 1423 #define ID2D1DCRenderTarget_GetSize(this) (this)->lpVtbl->Base.GetSize((ID2D1RenderTarget*)(this)) 1424 #define ID2D1DCRenderTarget_GetTags(this,A,B) (this)->lpVtbl->Base.GetTags((ID2D1RenderTarget*)(this),A,B) 1425 #define ID2D1DCRenderTarget_GetTextAntialiasMode(this) (this)->lpVtbl->Base.GetTextAntialiasMode((ID2D1RenderTarget*)(this)) 1426 #define ID2D1DCRenderTarget_GetTextRenderingParams(this,A) (this)->lpVtbl->Base.GetTextRenderingParams((ID2D1RenderTarget*)(this),A) 1427 #define ID2D1DCRenderTarget_GetTransform(this,A) (this)->lpVtbl->Base.GetTransform((ID2D1RenderTarget*)(this),A) 1428 #define ID2D1DCRenderTarget_IsSupported(this,A) (this)->lpVtbl->Base.IsSupported((ID2D1RenderTarget*)(this),A) 1429 #define ID2D1DCRenderTarget_PopAxisAlignedClip(this) (this)->lpVtbl->Base.PopAxisAlignedClip((ID2D1RenderTarget*)(this)) 1430 #define ID2D1DCRenderTarget_PopLayer(this) (this)->lpVtbl->Base.PopLayer((ID2D1RenderTarget*)(this)) 1431 #define ID2D1DCRenderTarget_PushAxisAlignedClip(this,A,B) (this)->lpVtbl->Base.PushAxisAlignedClip((ID2D1RenderTarget*)(this),A,B) 1432 #define ID2D1DCRenderTarget_PushLayer(this,A,B) (this)->lpVtbl->Base.PushLayer((ID2D1RenderTarget*)(this),A,B) 1433 #define ID2D1DCRenderTarget_RestoreDrawingState(this,A) (this)->lpVtbl->Base.RestoreDrawingState((ID2D1RenderTarget*)(this),A) 1434 #define ID2D1DCRenderTarget_SaveDrawingState(this,A) (this)->lpVtbl->Base.SaveDrawingState((ID2D1RenderTarget*)(this),A) 1435 #define ID2D1DCRenderTarget_SetAntialiasMode(this,A) (this)->lpVtbl->Base.SetAntialiasMode((ID2D1RenderTarget*)(this),A) 1436 #define ID2D1DCRenderTarget_SetDpi(this,A,B) (this)->lpVtbl->Base.SetDpi((ID2D1RenderTarget*)(this),A,B) 1437 #define ID2D1DCRenderTarget_SetTags(this,A,B) (this)->lpVtbl->Base.SetTags((ID2D1RenderTarget*)(this),A,B) 1438 #define ID2D1DCRenderTarget_SetTextAntialiasMode(this,A) (this)->lpVtbl->Base.SetTextAntialiasMode((ID2D1RenderTarget*)(this),A) 1439 #define ID2D1DCRenderTarget_SetTextRenderingParams(this,A) (this)->lpVtbl->Base.SetTextRenderingParams((ID2D1RenderTarget*)(this),A) 1440 #define ID2D1DCRenderTarget_SetTransform(this,A) (this)->lpVtbl->Base.SetTransform((ID2D1RenderTarget*)(this),A) 1441 #define ID2D1DCRenderTarget_BindDC(this,A,B) (this)->lpVtbl->BindDC(this,A,B) 1442 1443 #endif 1444 1445 DEFINE_GUID(IID_ID2D1DrawingStateBlock, 0x28506e39,0xebf6,0x46a1,0xbb,0x47,0xfd,0x85,0x56,0x5a,0xb9,0x57); 1446 1447 #ifndef D2D_USE_C_DEFINITIONS 1448 1449 interface ID2D1DrawingStateBlock : public ID2D1Resource { 1450 STDMETHOD_(void, GetDescription)(D2D1_DRAWING_STATE_DESCRIPTION *stateDescription) const PURE; 1451 STDMETHOD_(void, SetDescription)(const D2D1_DRAWING_STATE_DESCRIPTION *stateDescription) PURE; 1452 STDMETHOD_(void, SetTextRenderingParams)(IDWriteRenderingParams *textRenderingParams = NULL) PURE; 1453 STDMETHOD_(void, GetTextRenderingParams)(IDWriteRenderingParams **textRenderingParams) const PURE; 1454 1455 void SetDescription(const D2D1_DRAWING_STATE_DESCRIPTION &stateDescription) { 1456 SetDescription(&stateDescription); 1457 } 1458 }; 1459 1460 #else 1461 1462 typedef struct ID2D1DrawingStateBlockVtbl { 1463 ID2D1ResourceVtbl Base; 1464 1465 STDMETHOD_(void, GetDescription)(ID2D1DrawingStateBlock *This, D2D1_DRAWING_STATE_DESCRIPTION *stateDescription) PURE; 1466 STDMETHOD_(void, SetDescription)(ID2D1DrawingStateBlock *This, const D2D1_DRAWING_STATE_DESCRIPTION *stateDescription) PURE; 1467 STDMETHOD_(void, SetTextRenderingParams)(ID2D1DrawingStateBlock *This, IDWriteRenderingParams *textRenderingParams) PURE; 1468 STDMETHOD_(void, GetTextRenderingParams)(ID2D1DrawingStateBlock *This, IDWriteRenderingParams **textRenderingParams) PURE; 1469 } ID2D1DrawingStateBlockVtbl; 1470 1471 interface ID2D1DrawingStateBlock { 1472 const struct ID2D1DrawingStateBlockVtbl *lpVtbl; 1473 }; 1474 1475 #define ID2D1DrawingStateBlock_QueryInterface(this,A,B) (this)->lpVtbl->Base.Base.QueryInterface((IUnknown*)(this),A,B) 1476 #define ID2D1DrawingStateBlock_AddRef(this) (this)->lpVtbl->Base.Base.AddRef((IUnknown*)(this)) 1477 #define ID2D1DrawingStateBlock_Release(this) (this)->lpVtbl->Base.Base.Release((IUnknown*)(this)) 1478 #define ID2D1DrawingStateBlock_GetFactory(this,A) (this)->lpVtbl->Base.GetFactory((ID2D1Resource*)(this),A) 1479 #define ID2D1DrawingStateBlock_GetDescription(this,A) (this)->lpVtbl->GetDescription(this,A) 1480 #define ID2D1DrawingStateBlock_GetTextRenderingParams(this,A) (this)->lpVtbl->GetTextRenderingParams(this,A) 1481 #define ID2D1DrawingStateBlock_SetDescription(this,A) (this)->lpVtbl->SetDescription(this,A) 1482 #define ID2D1DrawingStateBlock_SetTextRenderingParams(this,A) (this)->lpVtbl->SetTextRenderingParams(this,A) 1483 1484 #endif 1485 1486 DEFINE_GUID(IID_ID2D1SimplifiedGeometrySink, 0x2cd9069e,0x12e2,0x11dc,0x9f,0xed,0x00,0x11,0x43,0xa0,0x55,0xf9); 1487 1488 #ifndef D2D_USE_C_DEFINITIONS 1489 1490 interface ID2D1SimplifiedGeometrySink : public IUnknown { 1491 STDMETHOD_(void, SetFillMode)(D2D1_FILL_MODE fillMode) PURE; 1492 STDMETHOD_(void, SetSegmentFlags)(D2D1_PATH_SEGMENT vertexFlags) PURE; 1493 STDMETHOD_(void, BeginFigure)(D2D1_POINT_2F startPoint, D2D1_FIGURE_BEGIN figureBegin) PURE; 1494 STDMETHOD_(void, AddLines)(const D2D1_POINT_2F *points, UINT pointsCount) PURE; 1495 STDMETHOD_(void, AddBeziers)(const D2D1_BEZIER_SEGMENT *beziers, UINT beziersCount) PURE; 1496 STDMETHOD_(void, EndFigure)(D2D1_FIGURE_END figureEnd) PURE; 1497 STDMETHOD(Close)(void) PURE; 1498 }; 1499 1500 #else 1501 1502 typedef struct ID2D1SimplifiedGeometrySinkVtbl { 1503 IUnknownVtbl Base; 1504 1505 STDMETHOD_(void, SetFillMode)(ID2D1SimplifiedGeometrySink *This, D2D1_FILL_MODE fillMode) PURE; 1506 STDMETHOD_(void, SetSegmentFlags)(ID2D1SimplifiedGeometrySink *This, D2D1_PATH_SEGMENT vertexFlags) PURE; 1507 STDMETHOD_(void, BeginFigure)(ID2D1SimplifiedGeometrySink *This, D2D1_POINT_2F startPoint, D2D1_FIGURE_BEGIN figureBegin) PURE; 1508 STDMETHOD_(void, AddLines)(ID2D1SimplifiedGeometrySink *This, const D2D1_POINT_2F *points, UINT pointsCount) PURE; 1509 STDMETHOD_(void, AddBeziers)(ID2D1SimplifiedGeometrySink *This, const D2D1_BEZIER_SEGMENT *beziers, UINT beziersCount) PURE; 1510 STDMETHOD_(void, EndFigure)(ID2D1SimplifiedGeometrySink *This, D2D1_FIGURE_END figureEnd) PURE; 1511 STDMETHOD(Close)(ID2D1SimplifiedGeometrySink *This) PURE; 1512 } ID2D1SimplifiedGeometrySinkVtbl; 1513 1514 interface ID2D1SimplifiedGeometrySink { 1515 const ID2D1SimplifiedGeometrySinkVtbl *lpVtbl; 1516 }; 1517 1518 #define ID2D1SimplifiedGeometrySink_QueryInterface(this,A,B) (this)->lpVtbl->Base.QueryInterface((IUnknown*)(this),A,B) 1519 #define ID2D1SimplifiedGeometrySink_AddRef(this) (this)->lpVtbl->Base.AddRef((IUnknown*)(this)) 1520 #define ID2D1SimplifiedGeometrySink_Release(this) (this)->lpVtbl->Base.Release((IUnknown*)(this)) 1521 #define ID2D1SimplifiedGeometrySink_SetFillMode(this,A) (this)->lpVtbl->SetFillMode(this,A) 1522 #define ID2D1SimplifiedGeometrySink_SetSegmentFlags(this,A) (this)->lpVtbl->SetSegmentFlags(this,A) 1523 #define ID2D1SimplifiedGeometrySink_BeginFigure(this,A,B) (this)->lpVtbl->BeginFigure(this,A,B) 1524 #define ID2D1SimplifiedGeometrySink_AddLines(this,A,B) (this)->lpVtbl->AddLines(this,A,B) 1525 #define ID2D1SimplifiedGeometrySink_AddBeziers(this,A,B) (this)->lpVtbl->AddBeziers(this,A,B) 1526 #define ID2D1SimplifiedGeometrySink_EndFigure(this,A) (this)->lpVtbl->EndFigure(this,A) 1527 #define ID2D1SimplifiedGeometrySink_Close(this) (this)->lpVtbl->Close(this) 1528 1529 #endif 1530 1531 DEFINE_GUID(IID_ID2D1EllipseGeometry, 0x2cd906a4,0x12e2,0x11dc,0x9f,0xed,0x00,0x11,0x43,0xa0,0x55,0xf9); 1532 1533 #ifndef D2D_USE_C_DEFINITIONS 1534 1535 interface ID2D1EllipseGeometry : public ID2D1Geometry { 1536 STDMETHOD_(void, GetEllipse)(D2D1_ELLIPSE *ellipse) const PURE; 1537 }; 1538 1539 #else 1540 1541 typedef struct ID2D1EllipseGeometryVtbl { 1542 ID2D1GeometryVtbl Base; 1543 1544 STDMETHOD_(void, GetEllipse)(ID2D1EllipseGeometry *This, D2D1_ELLIPSE *ellipse) PURE; 1545 } ID2D1EllipseGeometryVtbl; 1546 1547 interface ID2D1EllipseGeometry { 1548 const struct ID2D1EllipseGeometryVtbl *lpVtbl; 1549 }; 1550 1551 #define ID2D1EllipseGeometry_QueryInterface(this,A,B) (this)->lpVtbl->Base.Base.Base.QueryInterface((IUnknown*)(this),A,B) 1552 #define ID2D1EllipseGeometry_AddRef(this) (this)->lpVtbl->Base.Base.Base.AddRef((IUnknown*)(this)) 1553 #define ID2D1EllipseGeometry_Release(this) (this)->lpVtbl->Base.Base.Base.Release((IUnknown*)(this)) 1554 #define ID2D1EllipseGeometry_GetFactory(this,A) (this)->lpVtbl->Base.Base.GetFactory((ID2D1Resource*)(this),A) 1555 #define ID2D1EllipseGeometry_GetBounds(this,A,B) (this)->lpVtbl->Base.GetBounds((ID2D1Geometry*)(this),A,B) 1556 #define ID2D1EllipseGeometry_GetWidenedBounds(this,A,B,C,D,E) (this)->lpVtbl->Base.GetWidenedBounds((ID2D1Geometry*)(this),A,B,C,D,E) 1557 #define ID2D1EllipseGeometry_StrokeContainsPoint(this,A,B,C,D,E,F) (this)->lpVtbl->Base.StrokeContainsPoint((ID2D1Geometry*)(this),A,B,C,D,E,F) 1558 #define ID2D1EllipseGeometry_FillContainsPoint(this,A,B,C,D) (this)->lpVtbl->Base.FillContainsPoint((ID2D1Geometry*)(this),A,B,C,D) 1559 #define ID2D1EllipseGeometry_CompareWithGeometry(this,A,B,C,D) (this)->lpVtbl->Base.CompareWithGeometry((ID2D1Geometry*)(this),A,B,C,D) 1560 #define ID2D1EllipseGeometry_Simplify(this,A,B,C,D) (this)->lpVtbl->Base.Simplify((ID2D1Geometry*)(this),A,B,C,D) 1561 #define ID2D1EllipseGeometry_Tessellate(this,A,B,C) (this)->lpVtbl->Base.Tessellate((ID2D1Geometry*)(this),A,B,C) 1562 #define ID2D1EllipseGeometry_CombineWithGeometry(this,A,B,C,D,E) (this)->lpVtbl->Base.CombineWithGeometry((ID2D1Geometry*)(this),A,B,C,D,E) 1563 #define ID2D1EllipseGeometry_Outline(this,A,B,C) (this)->lpVtbl->Base.Outline((ID2D1Geometry*)(this),A,B,C) 1564 #define ID2D1EllipseGeometry_ComputeArea(this,A,B,C) (this)->lpVtbl->Base.ComputeArea((ID2D1Geometry*)(this),A,B,C) 1565 #define ID2D1EllipseGeometry_ComputeLength(this,A,B,C) (this)->lpVtbl->Base.ComputeLength((ID2D1Geometry*)(this),A,B,C) 1566 #define ID2D1EllipseGeometry_ComputePointAtLength(this,A,B,C,D,E) (this)->lpVtbl->Base.ComputePointAtLength((ID2D1Geometry*)(this),A,B,C,D,E) 1567 #define ID2D1EllipseGeometry_Widen(this,A,B,C,D,E) (this)->lpVtbl->Base.Widen((ID2D1Geometry*)(this),A,B,C,D,E) 1568 #define ID2D1EllipseGeometry_GetEllipse(this,A) (this)->lpVtbl->GetEllipse(this,A) 1569 1570 #endif 1571 1572 DEFINE_GUID(IID_ID2D1Factory, 0x06152247,0x6f50,0x465a,0x92,0x45,0x11,0x8b,0xfd,0x3b,0x60,0x07); 1573 1574 #ifndef D2D_USE_C_DEFINITIONS 1575 1576 interface ID2D1Factory : public IUnknown { 1577 STDMETHOD(ReloadSystemMetrics)(void) PURE; 1578 STDMETHOD_(void, GetDesktopDpi)(FLOAT *dpiX, FLOAT *dpiY) PURE; 1579 STDMETHOD(CreateRectangleGeometry)(const D2D1_RECT_F *rectangle, ID2D1RectangleGeometry **rectangleGeometry) PURE; 1580 STDMETHOD(CreateRoundedRectangleGeometry)(const D2D1_ROUNDED_RECT *roundedRectangle, ID2D1RoundedRectangleGeometry **roundedRectangleGeometry) PURE; 1581 STDMETHOD(CreateEllipseGeometry)(const D2D1_ELLIPSE *ellipse, ID2D1EllipseGeometry **ellipseGeometry) PURE; 1582 STDMETHOD(CreateGeometryGroup)(D2D1_FILL_MODE fillMode, ID2D1Geometry **geometries, UINT geometriesCount, ID2D1GeometryGroup **geometryGroup) PURE; 1583 STDMETHOD(CreateTransformedGeometry)(ID2D1Geometry *sourceGeometry, const D2D1_MATRIX_3X2_F *transform, ID2D1TransformedGeometry **transformedGeometry) PURE; 1584 STDMETHOD(CreatePathGeometry)(ID2D1PathGeometry **pathGeometry) PURE; 1585 STDMETHOD(CreateStrokeStyle)(const D2D1_STROKE_STYLE_PROPERTIES *strokeStyleProperties, const FLOAT *dashes, UINT dashesCount, ID2D1StrokeStyle **strokeStyle) PURE; 1586 STDMETHOD(CreateDrawingStateBlock)(const D2D1_DRAWING_STATE_DESCRIPTION *drawingStateDescription, IDWriteRenderingParams *textRenderingParams, ID2D1DrawingStateBlock **drawingStateBlock) PURE; 1587 STDMETHOD(CreateWicBitmapRenderTarget)(IWICBitmap *target, const D2D1_RENDER_TARGET_PROPERTIES *renderTargetProperties, ID2D1RenderTarget **renderTarget) PURE; 1588 STDMETHOD(CreateHwndRenderTarget)(const D2D1_RENDER_TARGET_PROPERTIES *renderTargetProperties, const D2D1_HWND_RENDER_TARGET_PROPERTIES *hwndRenderTargetProperties, ID2D1HwndRenderTarget **hwndRenderTarget) PURE; 1589 STDMETHOD(CreateDxgiSurfaceRenderTarget)(IDXGISurface *dxgiSurface, const D2D1_RENDER_TARGET_PROPERTIES *renderTargetProperties, ID2D1RenderTarget **renderTarget) PURE; 1590 STDMETHOD(CreateDCRenderTarget)(const D2D1_RENDER_TARGET_PROPERTIES *renderTargetProperties, ID2D1DCRenderTarget **dcRenderTarget) PURE; 1591 1592 HRESULT CreateRectangleGeometry(const D2D1_RECT_F &rectangle, ID2D1RectangleGeometry **rectangleGeometry) { 1593 return CreateRectangleGeometry(&rectangle, rectangleGeometry); 1594 } 1595 1596 HRESULT CreateRoundedRectangleGeometry(const D2D1_ROUNDED_RECT &roundedRectangle, ID2D1RoundedRectangleGeometry **roundedRectangleGeometry) { 1597 return CreateRoundedRectangleGeometry(&roundedRectangle, roundedRectangleGeometry); 1598 } 1599 1600 HRESULT CreateEllipseGeometry(const D2D1_ELLIPSE &ellipse, ID2D1EllipseGeometry **ellipseGeometry) { 1601 return CreateEllipseGeometry(&ellipse, ellipseGeometry); 1602 } 1603 1604 HRESULT CreateTransformedGeometry(ID2D1Geometry *sourceGeometry, const D2D1_MATRIX_3X2_F &transform, ID2D1TransformedGeometry **transformedGeometry) { 1605 return CreateTransformedGeometry(sourceGeometry, &transform, transformedGeometry); 1606 } 1607 1608 HRESULT CreateStrokeStyle(const D2D1_STROKE_STYLE_PROPERTIES &strokeStyleProperties, const FLOAT *dashes, UINT dashesCount, ID2D1StrokeStyle **strokeStyle) { 1609 return CreateStrokeStyle(&strokeStyleProperties, dashes, dashesCount, strokeStyle); 1610 } 1611 1612 HRESULT CreateDrawingStateBlock(const D2D1_DRAWING_STATE_DESCRIPTION &drawingStateDescription, ID2D1DrawingStateBlock **drawingStateBlock) { 1613 return CreateDrawingStateBlock(&drawingStateDescription, NULL, drawingStateBlock); 1614 } 1615 1616 HRESULT CreateDrawingStateBlock(ID2D1DrawingStateBlock **drawingStateBlock) { 1617 return CreateDrawingStateBlock(NULL, NULL, drawingStateBlock); 1618 } 1619 1620 HRESULT CreateWicBitmapRenderTarget(IWICBitmap *target, const D2D1_RENDER_TARGET_PROPERTIES &renderTargetProperties, ID2D1RenderTarget **renderTarget) { 1621 return CreateWicBitmapRenderTarget(target, &renderTargetProperties, renderTarget); 1622 } 1623 1624 HRESULT CreateHwndRenderTarget(const D2D1_RENDER_TARGET_PROPERTIES &renderTargetProperties, const D2D1_HWND_RENDER_TARGET_PROPERTIES &hwndRenderTargetProperties, ID2D1HwndRenderTarget **hwndRenderTarget) { 1625 return CreateHwndRenderTarget(&renderTargetProperties, &hwndRenderTargetProperties, hwndRenderTarget); 1626 } 1627 1628 HRESULT CreateDxgiSurfaceRenderTarget(IDXGISurface *dxgiSurface, const D2D1_RENDER_TARGET_PROPERTIES &renderTargetProperties, ID2D1RenderTarget **renderTarget) { 1629 return CreateDxgiSurfaceRenderTarget(dxgiSurface, &renderTargetProperties, renderTarget); 1630 } 1631 }; 1632 1633 #else 1634 1635 typedef struct ID2D1FactoryVtbl { 1636 IUnknownVtbl Base; 1637 1638 STDMETHOD(ReloadSystemMetrics)(ID2D1Factory *This) PURE; 1639 STDMETHOD_(void, GetDesktopDpi)(ID2D1Factory *This, FLOAT *dpiX, FLOAT *dpiY) PURE; 1640 STDMETHOD(CreateRectangleGeometry)(ID2D1Factory *This, const D2D1_RECT_F *rectangle, ID2D1RectangleGeometry **rectangleGeometry) PURE; 1641 STDMETHOD(CreateRoundedRectangleGeometry)(ID2D1Factory *This, const D2D1_ROUNDED_RECT *roundedRectangle, ID2D1RoundedRectangleGeometry **roundedRectangleGeometry) PURE; 1642 STDMETHOD(CreateEllipseGeometry)(ID2D1Factory *This, const D2D1_ELLIPSE *ellipse, ID2D1EllipseGeometry **ellipseGeometry) PURE; 1643 STDMETHOD(CreateGeometryGroup)(ID2D1Factory *This, D2D1_FILL_MODE fillMode, ID2D1Geometry **geometries, UINT geometriesCount, ID2D1GeometryGroup **geometryGroup) PURE; 1644 STDMETHOD(CreateTransformedGeometry)(ID2D1Factory *This, ID2D1Geometry *sourceGeometry, const D2D1_MATRIX_3X2_F *transform, ID2D1TransformedGeometry **transformedGeometry) PURE; 1645 STDMETHOD(CreatePathGeometry)(ID2D1Factory *This, ID2D1PathGeometry **pathGeometry) PURE; 1646 STDMETHOD(CreateStrokeStyle)(ID2D1Factory *This, const D2D1_STROKE_STYLE_PROPERTIES *strokeStyleProperties, const FLOAT *dashes, UINT dashesCount, ID2D1StrokeStyle **strokeStyle) PURE; 1647 STDMETHOD(CreateDrawingStateBlock)(ID2D1Factory *This, const D2D1_DRAWING_STATE_DESCRIPTION *drawingStateDescription, IDWriteRenderingParams *textRenderingParams, ID2D1DrawingStateBlock **drawingStateBlock) PURE; 1648 STDMETHOD(CreateWicBitmapRenderTarget)(ID2D1Factory *This, IWICBitmap *target, const D2D1_RENDER_TARGET_PROPERTIES *renderTargetProperties, ID2D1RenderTarget **renderTarget) PURE; 1649 STDMETHOD(CreateHwndRenderTarget)(ID2D1Factory *This, const D2D1_RENDER_TARGET_PROPERTIES *renderTargetProperties, const D2D1_HWND_RENDER_TARGET_PROPERTIES *hwndRenderTargetProperties, ID2D1HwndRenderTarget **hwndRenderTarget) PURE; 1650 STDMETHOD(CreateDxgiSurfaceRenderTarget)(ID2D1Factory *This, IDXGISurface *dxgiSurface, const D2D1_RENDER_TARGET_PROPERTIES *renderTargetProperties, ID2D1RenderTarget **renderTarget) PURE; 1651 STDMETHOD(CreateDCRenderTarget)(ID2D1Factory *This, const D2D1_RENDER_TARGET_PROPERTIES *renderTargetProperties, ID2D1DCRenderTarget **dcRenderTarget) PURE; 1652 } ID2D1FactoryVtbl; 1653 1654 interface ID2D1Factory { 1655 const ID2D1FactoryVtbl *lpVtbl; 1656 }; 1657 1658 #define ID2D1Factory_QueryInterface(this,A,B) (this)->lpVtbl->Base.QueryInterface((IUnknown*)(this),A,B) 1659 #define ID2D1Factory_AddRef(this) (this)->lpVtbl->Base.AddRef((IUnknown*)(this)) 1660 #define ID2D1Factory_Release(this) (this)->lpVtbl->Base.Release((IUnknown*)(this)) 1661 #define ID2D1Factory_CreateDCRenderTarget(this,A,B) (this)->lpVtbl->CreateDCRenderTarget(this,A,B) 1662 #define ID2D1Factory_CreateDrawingStateBlock(this,A,B,C) (this)->lpVtbl->CreateDrawingStateBlock(this,A,B,C) 1663 #define ID2D1Factory_CreateDxgiSurfaceRenderTarget(this,A,B,C) (this)->lpVtbl->CreateDxgiSurfaceRenderTarget(this,A,B,C) 1664 #define ID2D1Factory_CreateEllipseGeometry(this,A,B) (this)->lpVtbl->CreateEllipseGeometry(this,A,B) 1665 #define ID2D1Factory_CreateGeometryGroup(this,A,B,C,D) (this)->lpVtbl->CreateGeometryGroup(this,A,B,C,D) 1666 #define ID2D1Factory_CreateHwndRenderTarget(this,A,B,C) (this)->lpVtbl->CreateHwndRenderTarget(this,A,B,C) 1667 #define ID2D1Factory_CreatePathGeometry(this,A) (this)->lpVtbl->CreatePathGeometry(this,A) 1668 #define ID2D1Factory_CreateRectangleGeometry(this,A,B) (this)->lpVtbl->CreateRectangleGeometry(this,A,B) 1669 #define ID2D1Factory_CreateRoundedRectangleGeometry(this,A,B) (this)->lpVtbl->CreateRoundedRectangleGeometry(this,A,B) 1670 #define ID2D1Factory_CreateStrokeStyle(this,A,B,C,D) (this)->lpVtbl->CreateStrokeStyle(this,A,B,C,D) 1671 #define ID2D1Factory_CreateTransformedGeometry(this,A,B,C) (this)->lpVtbl->CreateTransformedGeometry(this,A,B,C) 1672 #define ID2D1Factory_CreateWicBitmapRenderTarget(this,A,B,C) (this)->lpVtbl->CreateWicBitmapRenderTarget(this,A,B,C) 1673 #define ID2D1Factory_GetDesktopDpi(this,A,B) (this)->lpVtbl->GetDesktopDpi(this,A,B) 1674 #define ID2D1Factory_ReloadSystemMetrics(this) (this)->lpVtbl->ReloadSystemMetrics(this) 1675 1676 #endif 1677 1678 DEFINE_GUID(IID_ID2D1GdiInteropRenderTarget, 0xe0db51c3,0x6f77,0x4bae,0xb3,0xd5,0xe4,0x75,0x09,0xb3,0x58,0x38); 1679 1680 #ifndef D2D_USE_C_DEFINITIONS 1681 1682 interface ID2D1GdiInteropRenderTarget : public IUnknown { 1683 STDMETHOD(GetDC)(D2D1_DC_INITIALIZE_MODE mode, HDC *hdc) PURE; 1684 STDMETHOD(ReleaseDC)(const RECT *update) PURE; 1685 }; 1686 1687 #else 1688 1689 typedef struct ID2D1GdiInteropRenderTargetVtbl { 1690 IUnknownVtbl Base; 1691 1692 STDMETHOD(GetDC)(ID2D1GdiInteropRenderTarget *This, D2D1_DC_INITIALIZE_MODE mode, HDC *hdc) PURE; 1693 STDMETHOD(ReleaseDC)(ID2D1GdiInteropRenderTarget *This, const RECT *update) PURE; 1694 } ID2D1GdiInteropRenderTargetVtbl; 1695 1696 interface ID2D1GdiInteropRenderTarget { 1697 const ID2D1GdiInteropRenderTargetVtbl *lpVtbl; 1698 }; 1699 1700 #define ID2D1GdiInteropRenderTarget_QueryInterface(this,A,B) (this)->lpVtbl->Base.QueryInterface((IUnknown*)(this),A,B) 1701 #define ID2D1GdiInteropRenderTarget_AddRef(this) (this)->lpVtbl->Base.AddRef((IUnknown*)(this)) 1702 #define ID2D1GdiInteropRenderTarget_Release(this) (this)->lpVtbl->Base.Release((IUnknown*)(this)) 1703 #define ID2D1GdiInteropRenderTarget_GetDC(this,A,B) (this)->lpVtbl->GetDC(this,A,B) 1704 #define ID2D1GdiInteropRenderTarget_ReleaseDC(this,A) (this)->lpVtbl->ReleaseDC(this,A) 1705 1706 #endif 1707 1708 DEFINE_GUID(IID_ID2D1GeometryGroup, 0x2cd906a6,0x12e2,0x11dc,0x9f,0xed,0x00,0x11,0x43,0xa0,0x55,0xf9); 1709 1710 #ifndef D2D_USE_C_DEFINITIONS 1711 1712 interface ID2D1GeometryGroup : public ID2D1Geometry { 1713 STDMETHOD_(D2D1_FILL_MODE, GetFillMode)() const PURE; 1714 STDMETHOD_(UINT32, GetSourceGeometryCount)() const PURE; 1715 STDMETHOD_(void, GetSourceGeometries)(ID2D1Geometry **geometries, UINT geometriesCount) const PURE; 1716 }; 1717 1718 #else 1719 1720 typedef struct ID2D1GeometryGroupVtbl { 1721 ID2D1GeometryVtbl Base; 1722 1723 STDMETHOD_(D2D1_FILL_MODE, GetFillMode)(ID2D1GeometryGroup *This) PURE; 1724 STDMETHOD_(UINT32, GetSourceGeometryCount)(ID2D1GeometryGroup *This) PURE; 1725 STDMETHOD_(void, GetSourceGeometries)(ID2D1GeometryGroup *This, ID2D1Geometry **geometries, UINT geometriesCount) PURE; 1726 } ID2D1GeometryGroupVtbl; 1727 1728 interface ID2D1GeometryGroup { 1729 const struct ID2D1GeometryGroupVtbl *lpVtbl; 1730 }; 1731 1732 #define ID2D1GeometryGroup_QueryInterface(this,A,B) (this)->lpVtbl->Base.Base.Base.QueryInterface((IUnknown*)(this),A,B) 1733 #define ID2D1GeometryGroup_AddRef(this) (this)->lpVtbl->Base.Base.Base.AddRef((IUnknown*)(this)) 1734 #define ID2D1GeometryGroup_Release(this) (this)->lpVtbl->Base.Base.Base.Release((IUnknown*)(this)) 1735 #define ID2D1GeometryGroup_GetFactory(this,A) (this)->lpVtbl->Base.Base.GetFactory((ID2D1Resource*)(this),A) 1736 #define ID2D1GeometryGroup_GetBounds(this,A,B) (this)->lpVtbl->Base.GetBounds((ID2D1Geometry*)(this),A,B) 1737 #define ID2D1GeometryGroup_GetWidenedBounds(this,A,B,C,D,E) (this)->lpVtbl->Base.GetWidenedBounds((ID2D1Geometry*)(this),A,B,C,D,E) 1738 #define ID2D1GeometryGroup_StrokeContainsPoint(this,A,B,C,D,E,F) (this)->lpVtbl->Base.StrokeContainsPoint((ID2D1Geometry*)(this),A,B,C,D,E,F) 1739 #define ID2D1GeometryGroup_FillContainsPoint(this,A,B,C,D) (this)->lpVtbl->Base.FillContainsPoint((ID2D1Geometry*)(this),A,B,C,D) 1740 #define ID2D1GeometryGroup_CompareWithGeometry(this,A,B,C,D) (this)->lpVtbl->Base.CompareWithGeometry((ID2D1Geometry*)(this),A,B,C,D) 1741 #define ID2D1GeometryGroup_Simplify(this,A,B,C,D) (this)->lpVtbl->Base.Simplify((ID2D1Geometry*)(this),A,B,C,D) 1742 #define ID2D1GeometryGroup_Tessellate(this,A,B,C) (this)->lpVtbl->Base.Tessellate((ID2D1Geometry*)(this),A,B,C) 1743 #define ID2D1GeometryGroup_CombineWithGeometry(this,A,B,C,D,E) (this)->lpVtbl->Base.CombineWithGeometry((ID2D1Geometry*)(this),A,B,C,D,E) 1744 #define ID2D1GeometryGroup_Outline(this,A,B,C) (this)->lpVtbl->Base.Outline((ID2D1Geometry*)(this),A,B,C) 1745 #define ID2D1GeometryGroup_ComputeArea(this,A,B,C) (this)->lpVtbl->Base.ComputeArea((ID2D1Geometry*)(this),A,B,C) 1746 #define ID2D1GeometryGroup_ComputeLength(this,A,B,C) (this)->lpVtbl->Base.ComputeLength((ID2D1Geometry*)(this),A,B,C) 1747 #define ID2D1GeometryGroup_ComputePointAtLength(this,A,B,C,D,E) (this)->lpVtbl->Base.ComputePointAtLength((ID2D1Geometry*)(this),A,B,C,D,E) 1748 #define ID2D1GeometryGroup_Widen(this,A,B,C,D,E) (this)->lpVtbl->Base.Widen((ID2D1Geometry*)(this),A,B,C,D,E) 1749 #define ID2D1GeometryGroup_GetFillMode(this) (this)->lpVtbl->GetFillMode(this) 1750 #define ID2D1GeometryGroup_GetSourceGeometries(this,A,B) (this)->lpVtbl->GetSourceGeometries(this,A,B) 1751 #define ID2D1GeometryGroup_GetSourceGeometryCount(this) (this)->lpVtbl->GetSourceGeometryCount(this) 1752 1753 #endif 1754 1755 DEFINE_GUID(IID_ID2D1GeometrySink, 0x2cd9069f,0x12e2,0x11dc,0x9f,0xed,0x00,0x11,0x43,0xa0,0x55,0xf9); 1756 1757 #ifndef D2D_USE_C_DEFINITIONS 1758 1759 interface ID2D1GeometrySink : public ID2D1SimplifiedGeometrySink { 1760 STDMETHOD_(void, AddLine)(D2D1_POINT_2F point) PURE; 1761 STDMETHOD_(void, AddBezier)(const D2D1_BEZIER_SEGMENT *bezier) PURE; 1762 STDMETHOD_(void, AddQuadraticBezier)(const D2D1_QUADRATIC_BEZIER_SEGMENT *bezier) PURE; 1763 STDMETHOD_(void, AddQuadraticBeziers)(const D2D1_QUADRATIC_BEZIER_SEGMENT *beziers, UINT beziersCount) PURE; 1764 STDMETHOD_(void, AddArc)(const D2D1_ARC_SEGMENT *arc) PURE; 1765 1766 void AddBezier(const D2D1_BEZIER_SEGMENT &bezier) { 1767 AddBezier(&bezier); 1768 } 1769 1770 void AddQuadraticBezier(const D2D1_QUADRATIC_BEZIER_SEGMENT &bezier) { 1771 AddQuadraticBezier(&bezier); 1772 } 1773 1774 void AddArc(const D2D1_ARC_SEGMENT &arc) { 1775 AddArc(&arc); 1776 } 1777 }; 1778 1779 #else 1780 1781 typedef struct ID2D1GeometrySinkVtbl { 1782 ID2D1SimplifiedGeometrySinkVtbl Base; 1783 1784 STDMETHOD_(void, AddLine)(ID2D1GeometrySink *This, D2D1_POINT_2F point) PURE; 1785 STDMETHOD_(void, AddBezier)(ID2D1GeometrySink *This, const D2D1_BEZIER_SEGMENT *bezier) PURE; 1786 STDMETHOD_(void, AddQuadraticBezier)(ID2D1GeometrySink *This, const D2D1_QUADRATIC_BEZIER_SEGMENT *bezier) PURE; 1787 STDMETHOD_(void, AddQuadraticBeziers)(ID2D1GeometrySink *This, const D2D1_QUADRATIC_BEZIER_SEGMENT *beziers, UINT beziersCount) PURE; 1788 STDMETHOD_(void, AddArc)(ID2D1GeometrySink *This, const D2D1_ARC_SEGMENT *arc) PURE; 1789 } ID2D1GeometrySinkVtbl; 1790 1791 interface ID2D1GeometrySink { 1792 const ID2D1GeometrySinkVtbl *lpVtbl; 1793 }; 1794 1795 #define ID2D1GeometrySink_QueryInterface(this,A,B) (this)->lpVtbl->Base.Base.QueryInterface((IUnknown*)(this),A,B) 1796 #define ID2D1GeometrySink_AddRef(this) (this)->lpVtbl->Base.Base.AddRef((IUnknown*)(this)) 1797 #define ID2D1GeometrySink_Release(this) (this)->lpVtbl->Base.Base.Release((IUnknown*)(this)) 1798 #define ID2D1GeometrySink_SetFillMode(this,A) (this)->lpVtbl->Base.SetFillMode((ID2D1SimplifiedGeometrySink*)(this),A) 1799 #define ID2D1GeometrySink_SetSegmentFlags(this,A) (this)->lpVtbl->Base.SetSegmentFlags((ID2D1SimplifiedGeometrySink*)(this),A) 1800 #define ID2D1GeometrySink_BeginFigure(this,A,B) (this)->lpVtbl->Base.BeginFigure((ID2D1SimplifiedGeometrySink*)(this),A,B) 1801 #define ID2D1GeometrySink_AddLines(this,A,B) (this)->lpVtbl->Base.AddLines((ID2D1SimplifiedGeometrySink*)(this),A,B) 1802 #define ID2D1GeometrySink_AddBeziers(this,A,B) (this)->lpVtbl->Base.AddBeziers((ID2D1SimplifiedGeometrySink*)(this),A,B) 1803 #define ID2D1GeometrySink_EndFigure(this,A) (this)->lpVtbl->Base.EndFigure((ID2D1SimplifiedGeometrySink*)(this),A) 1804 #define ID2D1GeometrySink_Close(this) (this)->lpVtbl->Base.Close((ID2D1SimplifiedGeometrySink*)(this)) 1805 #define ID2D1GeometrySink_AddArc(this,A) (this)->lpVtbl->AddArc(this,A) 1806 #define ID2D1GeometrySink_AddBezier(this,A) (this)->lpVtbl->AddBezier(this,A) 1807 #define ID2D1GeometrySink_AddLine(this,A) (this)->lpVtbl->AddLine(this,A) 1808 #define ID2D1GeometrySink_AddQuadraticBezier(this,A) (this)->lpVtbl->AddQuadraticBezier(this,A) 1809 #define ID2D1GeometrySink_AddQuadraticBeziers(this,A,B) (this)->lpVtbl->AddQuadraticBeziers(this,A,B) 1810 1811 #endif 1812 1813 DEFINE_GUID(IID_ID2D1GradientStopCollection, 0x2cd906a7,0x12e2,0x11dc,0x9f,0xed,0x00,0x11,0x43,0xa0,0x55,0xf9); 1814 1815 #ifndef D2D_USE_C_DEFINITIONS 1816 1817 interface ID2D1GradientStopCollection : public ID2D1Resource { 1818 STDMETHOD_(UINT32, GetGradientStopCount)(void) const PURE; 1819 STDMETHOD_(void, GetGradientStops)(D2D1_GRADIENT_STOP *gradientStops, UINT gradientStopsCount) const PURE; 1820 STDMETHOD_(D2D1_GAMMA, GetColorInterpolationGamma)(void) const PURE; 1821 STDMETHOD_(D2D1_EXTEND_MODE, GetExtendMode)(void) const PURE; 1822 }; 1823 1824 #else 1825 1826 typedef struct ID2D1GradientStopCollectionVtbl { 1827 ID2D1ResourceVtbl Base; 1828 1829 STDMETHOD_(UINT32, GetGradientStopCount)(ID2D1GradientStopCollection *This) PURE; 1830 STDMETHOD_(void, GetGradientStops)(ID2D1GradientStopCollection *This, D2D1_GRADIENT_STOP *gradientStops, UINT gradientStopsCount) PURE; 1831 STDMETHOD_(D2D1_GAMMA, GetColorInterpolationGamma)(ID2D1GradientStopCollection *This) PURE; 1832 STDMETHOD_(D2D1_EXTEND_MODE, GetExtendMode)(ID2D1GradientStopCollection *This) PURE; 1833 } ID2D1GradientStopCollectionVtbl; 1834 1835 interface ID2D1GradientStopCollection { 1836 const ID2D1GradientStopCollectionVtbl *lpVtbl; 1837 }; 1838 1839 #define ID2D1GradientStopCollection_QueryInterface(this,A,B) (this)->lpVtbl->Base.Base.QueryInterface((IUnknown*)(this),A,B) 1840 #define ID2D1GradientStopCollection_AddRef(this) (this)->lpVtbl->Base.Base.AddRef((IUnknown*)(this)) 1841 #define ID2D1GradientStopCollection_Release(this) (this)->lpVtbl->Base.Base.Release((IUnknown*)(this)) 1842 #define ID2D1GradientStopCollection_GetFactory(this,A) (this)->lpVtbl->Base.GetFactory((ID2D1Resource*)(this),A) 1843 #define ID2D1GradientStopCollection_GetColorInterpolationGamma(this) (this)->lpVtbl->GetColorInterpolationGamma(this) 1844 #define ID2D1GradientStopCollection_GetExtendMode(this) (this)->lpVtbl->GetExtendMode(this) 1845 #define ID2D1GradientStopCollection_GetGradientStopCount(this) (this)->lpVtbl->GetGradientStopCount(this) 1846 #define ID2D1GradientStopCollection_GetGradientStops(this,A,B) (this)->lpVtbl->GetGradientStops(this,A,B) 1847 1848 #endif 1849 1850 #ifndef D2D_USE_C_DEFINITIONS 1851 1852 interface ID2D1HwndRenderTarget : public ID2D1RenderTarget { 1853 STDMETHOD_(D2D1_WINDOW_STATE, CheckWindowState)() PURE; 1854 STDMETHOD(Resize)(const D2D1_SIZE_U *pixelSize) PURE; 1855 STDMETHOD_(HWND, GetHwnd)() const PURE; 1856 1857 HRESULT Resize(const D2D1_SIZE_U &pixelSize) { 1858 return Resize(&pixelSize); 1859 } 1860 }; 1861 1862 #else 1863 1864 typedef interface ID2D1HwndRenderTarget ID2D1HwndRenderTarget; 1865 1866 typedef struct ID2D1HwndRenderTargetVtbl { 1867 ID2D1RenderTargetVtbl Base; 1868 1869 STDMETHOD_(D2D1_WINDOW_STATE, CheckWindowState)(ID2D1HwndRenderTarget *This) PURE; 1870 STDMETHOD(Resize)(ID2D1HwndRenderTarget *This, const D2D1_SIZE_U *pixelSize) PURE; 1871 STDMETHOD_(HWND, GetHwnd)(ID2D1HwndRenderTarget *This) PURE; 1872 } ID2D1HwndRenderTargetVtbl; 1873 1874 interface ID2D1HwndRenderTarget { 1875 const struct ID2D1HwndRenderTargetVtbl *lpVtbl; 1876 }; 1877 1878 #define ID2D1HwndRenderTarget_QueryInterface(this,A,B) (this)->lpVtbl->Base.Base.Base.QueryInterface((IUnknown*)(this),A,B) 1879 #define ID2D1HwndRenderTarget_AddRef(this) (this)->lpVtbl->Base.Base.Base.AddRef((IUnknown*)(this)) 1880 #define ID2D1HwndRenderTarget_Release(this) (this)->lpVtbl->Base.Base.Base.Release((IUnknown*)(this)) 1881 #define ID2D1HwndRenderTarget_GetFactory(this,A) (this)->lpVtbl->Base.Base.GetFactory((ID2D1Resource*)(this),A) 1882 #define ID2D1HwndRenderTarget_BeginDraw(this) (this)->lpVtbl->Base.BeginDraw((ID2D1RenderTarget*)(this)) 1883 #define ID2D1HwndRenderTarget_Clear(this,A) (this)->lpVtbl->Base.Clear((ID2D1RenderTarget*)(this),A) 1884 #define ID2D1HwndRenderTarget_CreateBitmap(this,A,B,C,D,E) (this)->lpVtbl->Base.CreateBitmap((ID2D1RenderTarget*)(this),A,B,C,D,E) 1885 #define ID2D1HwndRenderTarget_CreateBitmapBrush(this,A,B) (this)->lpVtbl->Base.CreateBitmapBrush((ID2D1RenderTarget*)(this),A,B) 1886 #define ID2D1HwndRenderTarget_CreateBitmapFromWicBitmap(this,A,B,C) (this)->lpVtbl->Base.CreateBitmapFromWicBitmap((ID2D1RenderTarget*)(this),A,B,C) 1887 #define ID2D1HwndRenderTarget_CreateCompatibleRenderTarget(this,A,B,C,D,E) (this)->lpVtbl->Base.CreateCompatibleRenderTarget((ID2D1RenderTarget*)(this),A,B,C,D,E) 1888 #define ID2D1HwndRenderTarget_CreateGradientStopCollection(this,A,B,C) (this)->lpVtbl->Base.CreateGradientStopCollection((ID2D1RenderTarget*)(this),A,B,C) 1889 #define ID2D1HwndRenderTarget_CreateLayer(this,A,B) (this)->lpVtbl->Base.CreateLayer((ID2D1RenderTarget*)(this),A,B) 1890 #define ID2D1HwndRenderTarget_CreateLinearGradientBrush(this,A,B,C,D) (this)->lpVtbl->Base.CreateLinearGradientBrush((ID2D1RenderTarget*)(this),A,B,C,D) 1891 #define ID2D1HwndRenderTarget_CreateMesh(this,A) (this)->lpVtbl->Base.CreateMesh((ID2D1RenderTarget*)(this),A) 1892 #define ID2D1HwndRenderTarget_CreateRadialGradientBrush(this,A,B,C,D) (this)->lpVtbl->Base.CreateRadialGradientBrush((ID2D1RenderTarget*)(this),A,B,C,D) 1893 #define ID2D1HwndRenderTarget_CreateSharedBitmap(this,A,B,C,D) (this)->lpVtbl->Base.CreateSharedBitmap((ID2D1RenderTarget*)(this),A,B,C,D) 1894 #define ID2D1HwndRenderTarget_CreateSolidColorBrush(this,A,B,C) (this)->lpVtbl->Base.CreateSolidColorBrush((ID2D1RenderTarget*)(this),A,B,C) 1895 #define ID2D1HwndRenderTarget_DrawBitmap(this,A,B,C,D,E) (this)->lpVtbl->Base.DrawBitmap((ID2D1RenderTarget*)(this),A,B,C,D,E) 1896 #define ID2D1HwndRenderTarget_DrawEllipse(this,A,B,C,D) (this)->lpVtbl->Base.DrawEllipse((ID2D1RenderTarget*)(this),A,B,C,D) 1897 #define ID2D1HwndRenderTarget_DrawGeometry(this,A,B,C,D) (this)->lpVtbl->Base.DrawGeometry((ID2D1RenderTarget*)(this),A,B,C,D) 1898 #define ID2D1HwndRenderTarget_DrawGlyphRun(this,A,B,C,D) (this)->lpVtbl->Base.DrawGlyphRun((ID2D1RenderTarget*)(this),A,B,C,D) 1899 #define ID2D1HwndRenderTarget_DrawLine(this,A,B,C,D,E) (this)->lpVtbl->Base.DrawLine((ID2D1RenderTarget*)(this),A,B,C,D,E) 1900 #define ID2D1HwndRenderTarget_DrawRectangle(this,A,B,C,D) (this)->lpVtbl->Base.DrawRectangle((ID2D1RenderTarget*)(this),A,B,C,D) 1901 #define ID2D1HwndRenderTarget_DrawRoundedRectangle(this,A,B,C,D) (this)->lpVtbl->Base.DrawRoundedRectangle((ID2D1RenderTarget*)(this),A,B,C,D) 1902 #define ID2D1HwndRenderTarget_DrawText(this,A,B,C,D,E,F,G) (this)->lpVtbl->Base.DrawText((ID2D1RenderTarget*)(this),A,B,C,D,E,F,G) 1903 #define ID2D1HwndRenderTarget_DrawTextLayout(this,A,B,C,D) (this)->lpVtbl->Base.DrawTextLayout((ID2D1RenderTarget*)(this),A,B,C,D) 1904 #define ID2D1HwndRenderTarget_EndDraw(this,A,B) (this)->lpVtbl->Base.EndDraw((ID2D1RenderTarget*)(this),A,B) 1905 #define ID2D1HwndRenderTarget_FillEllipse(this,A,B) (this)->lpVtbl->Base.FillEllipse((ID2D1RenderTarget*)(this),A,B) 1906 #define ID2D1HwndRenderTarget_FillGeometry(this,A,B,C) (this)->lpVtbl->Base.FillGeometry((ID2D1RenderTarget*)(this),A,B,C) 1907 #define ID2D1HwndRenderTarget_FillMesh(this,A,B) (this)->lpVtbl->Base.FillMesh((ID2D1RenderTarget*)(this),A,B) 1908 #define ID2D1HwndRenderTarget_FillOpacityMask(this,A,B,C,D,E) (this)->lpVtbl->Base.FillOpacityMask((ID2D1RenderTarget*)(this),A,B,C,D,E) 1909 #define ID2D1HwndRenderTarget_FillRectangle(this,A,B) (this)->lpVtbl->Base.FillRectangle((ID2D1RenderTarget*)(this),A,B) 1910 #define ID2D1HwndRenderTarget_FillRoundedRectangle(this,A,B) (this)->lpVtbl->Base.FillRoundedRectangle((ID2D1RenderTarget*)(this),A,B) 1911 #define ID2D1HwndRenderTarget_Flush(this,A,B) (this)->lpVtbl->Base.Flush((ID2D1RenderTarget*)(this),A,B) 1912 #define ID2D1HwndRenderTarget_GetAntialiasMode(this) (this)->lpVtbl->Base.GetAntialiasMode((ID2D1RenderTarget*)(this)) 1913 #define ID2D1HwndRenderTarget_GetDpi(this,A,B) (this)->lpVtbl->Base.GetDpi((ID2D1RenderTarget*)(this),A,B) 1914 #define ID2D1HwndRenderTarget_GetMaximumBitmapSize(this) (this)->lpVtbl->Base.GetMaximumBitmapSize((ID2D1RenderTarget*)(this)) 1915 #define ID2D1HwndRenderTarget_GetPixelFormat(this) (this)->lpVtbl->Base.GetPixelFormat((ID2D1RenderTarget*)(this)) 1916 #define ID2D1HwndRenderTarget_GetPixelSize(this) (this)->lpVtbl->Base.GetPixelSize((ID2D1RenderTarget*)(this)) 1917 #define ID2D1HwndRenderTarget_GetSize(this) (this)->lpVtbl->Base.GetSize((ID2D1RenderTarget*)(this)) 1918 #define ID2D1HwndRenderTarget_GetTags(this,A,B) (this)->lpVtbl->Base.GetTags((ID2D1RenderTarget*)(this),A,B) 1919 #define ID2D1HwndRenderTarget_GetTextAntialiasMode(this) (this)->lpVtbl->Base.GetTextAntialiasMode((ID2D1RenderTarget*)(this)) 1920 #define ID2D1HwndRenderTarget_GetTextRenderingParams(this,A) (this)->lpVtbl->Base.GetTextRenderingParams((ID2D1RenderTarget*)(this),A) 1921 #define ID2D1HwndRenderTarget_GetTransform(this,A) (this)->lpVtbl->Base.GetTransform((ID2D1RenderTarget*)(this),A) 1922 #define ID2D1HwndRenderTarget_IsSupported(this,A) (this)->lpVtbl->Base.IsSupported((ID2D1RenderTarget*)(this),A) 1923 #define ID2D1HwndRenderTarget_PopAxisAlignedClip(this) (this)->lpVtbl->Base.PopAxisAlignedClip((ID2D1RenderTarget*)(this)) 1924 #define ID2D1HwndRenderTarget_PopLayer(this) (this)->lpVtbl->Base.PopLayer((ID2D1RenderTarget*)(this)) 1925 #define ID2D1HwndRenderTarget_PushAxisAlignedClip(this,A,B) (this)->lpVtbl->Base.PushAxisAlignedClip((ID2D1RenderTarget*)(this),A,B) 1926 #define ID2D1HwndRenderTarget_PushLayer(this,A,B) (this)->lpVtbl->Base.PushLayer((ID2D1RenderTarget*)(this),A,B) 1927 #define ID2D1HwndRenderTarget_RestoreDrawingState(this,A) (this)->lpVtbl->Base.RestoreDrawingState((ID2D1RenderTarget*)(this),A) 1928 #define ID2D1HwndRenderTarget_SaveDrawingState(this,A) (this)->lpVtbl->Base.SaveDrawingState((ID2D1RenderTarget*)(this),A) 1929 #define ID2D1HwndRenderTarget_SetAntialiasMode(this,A) (this)->lpVtbl->Base.SetAntialiasMode((ID2D1RenderTarget*)(this),A) 1930 #define ID2D1HwndRenderTarget_SetDpi(this,A,B) (this)->lpVtbl->Base.SetDpi((ID2D1RenderTarget*)(this),A,B) 1931 #define ID2D1HwndRenderTarget_SetTags(this,A,B) (this)->lpVtbl->Base.SetTags((ID2D1RenderTarget*)(this),A,B) 1932 #define ID2D1HwndRenderTarget_SetTextAntialiasMode(this,A) (this)->lpVtbl->Base.SetTextAntialiasMode((ID2D1RenderTarget*)(this),A) 1933 #define ID2D1HwndRenderTarget_SetTextRenderingParams(this,A) (this)->lpVtbl->Base.SetTextRenderingParams((ID2D1RenderTarget*)(this),A) 1934 #define ID2D1HwndRenderTarget_SetTransform(this,A) (this)->lpVtbl->Base.SetTransform((ID2D1RenderTarget*)(this),A) 1935 #define ID2D1HwndRenderTarget_CheckWindowState(this) (this)->lpVtbl->CheckWindowState(this) 1936 #define ID2D1HwndRenderTarget_GetHwnd(this) (this)->lpVtbl->GetHwnd(this) 1937 #define ID2D1HwndRenderTarget_Resize(this,A) (this)->lpVtbl->Resize(this,A) 1938 1939 #endif 1940 1941 DEFINE_GUID(IID_ID2D1Layer, 0x2cd9069b,0x12e2,0x11dc,0x9f,0xed,0x00,0x11,0x43,0xa0,0x55,0xf9); 1942 1943 #ifndef D2D_USE_C_DEFINITIONS 1944 1945 interface ID2D1Layer : public ID2D1Resource { 1946 #ifndef WIDL_EXPLICIT_AGGREGATE_RETURNS 1947 STDMETHOD_(D2D1_SIZE_F, GetSize)(void) const PURE; 1948 #else 1949 virtual D2D1_SIZE_F* STDMETHODCALLTYPE GetSize(D2D1_SIZE_F*) const = 0; 1950 D2D1_SIZE_F STDMETHODCALLTYPE GetSize() const { 1951 D2D1_SIZE_F __ret; 1952 GetSize(&__ret); 1953 return __ret; 1954 } 1955 #endif 1956 }; 1957 1958 #else 1959 1960 typedef struct ID2D1LayerVtbl { 1961 ID2D1ResourceVtbl Base; 1962 1963 STDMETHOD_(D2D1_SIZE_F, GetSize)(ID2D1Layer *This) PURE; 1964 } ID2D1LayerVtbl; 1965 1966 interface ID2D1Layer { 1967 const ID2D1LayerVtbl *lpVtbl; 1968 }; 1969 1970 #define ID2D1Layer_QueryInterface(this,A,B) (this)->lpVtbl->Base.Base.QueryInterface((IUnknown*)(this),A,B) 1971 #define ID2D1Layer_AddRef(this) (this)->lpVtbl->Base.Base.AddRef((IUnknown*)(this)) 1972 #define ID2D1Layer_Release(this) (this)->lpVtbl->Base.Base.Release((IUnknown*)(this)) 1973 #define ID2D1Layer_GetFactory(this,A) (this)->lpVtbl->Base.GetFactory((ID2D1Resource*)(this),A) 1974 #define ID2D1Layer_GetSize(this) (this)->lpVtbl->GetSize(this) 1975 1976 #endif 1977 1978 DEFINE_GUID(IID_ID2D1LinearGradientBrush, 0x2cd906ab,0x12e2,0x11dc,0x9f,0xed,0x00,0x11,0x43,0xa0,0x55,0xf9); 1979 1980 #ifndef D2D_USE_C_DEFINITIONS 1981 1982 interface ID2D1LinearGradientBrush : public ID2D1Brush { 1983 STDMETHOD_(void, SetStartPoint)(D2D1_POINT_2F startPoint) PURE; 1984 STDMETHOD_(void, SetEndPoint)(D2D1_POINT_2F endPoint) PURE; 1985 1986 #ifndef WIDL_EXPLICIT_AGGREGATE_RETURNS 1987 STDMETHOD_(D2D1_POINT_2F, GetStartPoint)(void) const PURE; 1988 #else 1989 virtual D2D1_POINT_2F* STDMETHODCALLTYPE GetStartPoint(D2D1_POINT_2F*) const = 0; 1990 D2D1_POINT_2F STDMETHODCALLTYPE GetStartPoint() const { 1991 D2D1_POINT_2F __ret; 1992 GetStartPoint(&__ret); 1993 return __ret; 1994 } 1995 #endif 1996 1997 #ifndef WIDL_EXPLICIT_AGGREGATE_RETURNS 1998 STDMETHOD_(D2D1_POINT_2F, GetEndPoint)(void) const PURE; 1999 #else 2000 virtual D2D1_POINT_2F* STDMETHODCALLTYPE GetEndPoint(D2D1_POINT_2F*) const = 0; 2001 D2D1_POINT_2F STDMETHODCALLTYPE GetEndPoint() const { 2002 D2D1_POINT_2F __ret; 2003 GetEndPoint(&__ret); 2004 return __ret; 2005 } 2006 #endif 2007 2008 STDMETHOD_(void, GetGradientStopCollection)(ID2D1GradientStopCollection **gradientStopCollection) const PURE; 2009 }; 2010 2011 #else 2012 2013 typedef struct ID2D1LinearGradientBrushVtbl { 2014 ID2D1BrushVtbl Base; 2015 2016 STDMETHOD_(void, SetStartPoint)(ID2D1LinearGradientBrush *This, D2D1_POINT_2F startPoint) PURE; 2017 STDMETHOD_(void, SetEndPoint)(ID2D1LinearGradientBrush *This, D2D1_POINT_2F endPoint) PURE; 2018 STDMETHOD_(D2D1_POINT_2F, GetStartPoint)(ID2D1LinearGradientBrush *This) PURE; 2019 STDMETHOD_(D2D1_POINT_2F, GetEndPoint)(ID2D1LinearGradientBrush *This) PURE; 2020 STDMETHOD_(void, GetGradientStopCollection)(ID2D1LinearGradientBrush *This, ID2D1GradientStopCollection **gradientStopCollection) PURE; 2021 } ID2D1LinearGradientBrushVtbl; 2022 2023 interface ID2D1LinearGradientBrush { 2024 const ID2D1LinearGradientBrushVtbl *lpVtbl; 2025 }; 2026 2027 #define ID2D1LinearGradientBrush_QueryInterface(this,A,B) (this)->lpVtbl->Base.Base.Base.QueryInterface((IUnknown*)(this),A,B) 2028 #define ID2D1LinearGradientBrush_AddRef(this) (this)->lpVtbl->Base.Base.Base.AddRef((IUnknown*)(this)) 2029 #define ID2D1LinearGradientBrush_Release(this) (this)->lpVtbl->Base.Base.Base.Release((IUnknown*)(this)) 2030 #define ID2D1LinearGradientBrush_GetFactory(this,A) (this)->lpVtbl->Base.Base.GetFactory((ID2D1Resource*)(this),A) 2031 #define ID2D1LinearGradientBrush_SetOpacity(this,A) (this)->lpVtbl->Base.SetOpacity((ID2D1Brush*)(this),A) 2032 #define ID2D1LinearGradientBrush_SetTransform(this,A) (this)->lpVtbl->Base.SetTransform((ID2D1Brush*)(this),A) 2033 #define ID2D1LinearGradientBrush_GetOpacity(this) (this)->lpVtbl->Base.GetOpacity((ID2D1Brush*)(this)) 2034 #define ID2D1LinearGradientBrush_GetTransform(this,A) (this)->lpVtbl->Base.GetTransform((ID2D1Brush*)(this),A) 2035 #define ID2D1LinearGradientBrush_GetEndPoint(this) (this)->lpVtbl->GetEndPoint(this) 2036 #define ID2D1LinearGradientBrush_GetGradientStopCollection(this,A) (this)->lpVtbl->GetGradientStopCollection(this,A) 2037 #define ID2D1LinearGradientBrush_GetStartPoint(this) (this)->lpVtbl->GetStartPoint(this) 2038 #define ID2D1LinearGradientBrush_SetEndPoint(this,A) (this)->lpVtbl->SetEndPoint(this,A) 2039 #define ID2D1LinearGradientBrush_SetStartPoint(this,A) (this)->lpVtbl->SetStartPoint(this,A) 2040 2041 #endif 2042 2043 DEFINE_GUID(IID_ID2D1Mesh,0x2cd906c2,0x12e2,0x11dc,0x9f,0xed,0x00,0x11,0x43,0xa0,0x55,0xf9); 2044 2045 #ifndef D2D_USE_C_DEFINITIONS 2046 2047 interface ID2D1Mesh : public ID2D1Resource { 2048 STDMETHOD(Open)(ID2D1TessellationSink **tessellationSink) PURE; 2049 }; 2050 2051 #else 2052 2053 typedef struct ID2D1MeshVtbl{ 2054 ID2D1ResourceVtbl Base; 2055 2056 STDMETHOD(Open)(ID2D1Mesh *This, ID2D1TessellationSink **tessellationSink) PURE; 2057 } ID2D1MeshVtbl; 2058 2059 interface ID2D1Mesh { 2060 const struct ID2D1MeshVtbl *lpVtbl; 2061 }; 2062 2063 #define ID2D1Mesh_QueryInterface(this,A,B) (this)->lpVtbl->Base.Base.QueryInterface((IUnknown*)(this),A,B) 2064 #define ID2D1Mesh_AddRef(this) (this)->lpVtbl->Base.Base.AddRef((IUnknown*)(this)) 2065 #define ID2D1Mesh_Release(this) (this)->lpVtbl->Base.Base.Release((IUnknown*)(this)) 2066 #define ID2D1Mesh_GetFactory(this,A) (this)->lpVtbl->Base.GetFactory((ID2D1Resource*)(this),A) 2067 #define ID2D1Mesh_Open(this,A) (this)->lpVtbl->Open(this,A) 2068 2069 #endif 2070 2071 DEFINE_GUID(IID_ID2D1PathGeometry, 0x2cd906a5,0x12e2,0x11dc,0x9f,0xed,0x00,0x11,0x43,0xa0,0x55,0xf9); 2072 2073 #ifndef D2D_USE_C_DEFINITIONS 2074 2075 interface ID2D1PathGeometry : public ID2D1Geometry { 2076 STDMETHOD(Open)(ID2D1GeometrySink **geometrySink) PURE; 2077 STDMETHOD(Stream)(ID2D1GeometrySink *geometrySink) const PURE; 2078 STDMETHOD(GetSegmentCount)(UINT32 *count) const PURE; 2079 STDMETHOD(GetFigureCount)(UINT32 *count) const PURE; 2080 }; 2081 2082 #else 2083 2084 typedef struct ID2D1PathGeometryVtbl { 2085 ID2D1GeometryVtbl Base; 2086 2087 STDMETHOD(Open)(ID2D1PathGeometry *This, ID2D1GeometrySink **geometrySink) PURE; 2088 STDMETHOD(Stream)(ID2D1PathGeometry *This, ID2D1GeometrySink *geometrySink) PURE; 2089 STDMETHOD(GetSegmentCount)(ID2D1PathGeometry *This, UINT32 *count) PURE; 2090 STDMETHOD(GetFigureCount)(ID2D1PathGeometry *This, UINT32 *count) PURE; 2091 } ID2D1PathGeometryVtbl; 2092 2093 interface ID2D1PathGeometry { 2094 const ID2D1PathGeometryVtbl *lpVtbl; 2095 }; 2096 2097 #define ID2D1PathGeometry_QueryInterface(this,A,B) (this)->lpVtbl->Base.Base.Base.QueryInterface((IUnknown*)(this),A,B) 2098 #define ID2D1PathGeometry_AddRef(this) (this)->lpVtbl->Base.Base.Base.AddRef((IUnknown*)(this)) 2099 #define ID2D1PathGeometry_Release(this) (this)->lpVtbl->Base.Base.Base.Release((IUnknown*)(this)) 2100 #define ID2D1PathGeometry_GetFactory(this,A) (this)->lpVtbl->Base.Base.GetFactory((ID2D1Resource*)(this),A) 2101 #define ID2D1PathGeometry_GetBounds(this,A,B) (this)->lpVtbl->Base.GetBounds((ID2D1Geometry*)(this),A,B) 2102 #define ID2D1PathGeometry_GetWidenedBounds(this,A,B,C,D,E) (this)->lpVtbl->Base.GetWidenedBounds((ID2D1Geometry*)(this),A,B,C,D,E) 2103 #define ID2D1PathGeometry_StrokeContainsPoint(this,A,B,C,D,E,F) (this)->lpVtbl->Base.StrokeContainsPoint((ID2D1Geometry*)(this),A,B,C,D,E,F) 2104 #define ID2D1PathGeometry_FillContainsPoint(this,A,B,C,D) (this)->lpVtbl->Base.FillContainsPoint((ID2D1Geometry*)(this),A,B,C,D) 2105 #define ID2D1PathGeometry_CompareWithGeometry(this,A,B,C,D) (this)->lpVtbl->Base.CompareWithGeometry((ID2D1Geometry*)(this),A,B,C,D) 2106 #define ID2D1PathGeometry_Simplify(this,A,B,C,D) (this)->lpVtbl->Base.Simplify((ID2D1Geometry*)(this),A,B,C,D) 2107 #define ID2D1PathGeometry_Tessellate(this,A,B,C) (this)->lpVtbl->Base.Tessellate((ID2D1Geometry*)(this),A,B,C) 2108 #define ID2D1PathGeometry_CombineWithGeometry(this,A,B,C,D,E) (this)->lpVtbl->Base.CombineWithGeometry((ID2D1Geometry*)(this),A,B,C,D,E) 2109 #define ID2D1PathGeometry_Outline(this,A,B,C) (this)->lpVtbl->Base.Outline((ID2D1Geometry*)(this),A,B,C) 2110 #define ID2D1PathGeometry_ComputeArea(this,A,B,C) (this)->lpVtbl->Base.ComputeArea((ID2D1Geometry*)(this),A,B,C) 2111 #define ID2D1PathGeometry_ComputeLength(this,A,B,C) (this)->lpVtbl->Base.ComputeLength((ID2D1Geometry*)(this),A,B,C) 2112 #define ID2D1PathGeometry_ComputePointAtLength(this,A,B,C,D,E) (this)->lpVtbl->Base.ComputePointAtLength((ID2D1Geometry*)(this),A,B,C,D,E) 2113 #define ID2D1PathGeometry_Widen(this,A,B,C,D,E) (this)->lpVtbl->Base.Widen((ID2D1Geometry*)(this),A,B,C,D,E) 2114 #define ID2D1PathGeometry_Open(this,A) (this)->lpVtbl->Open(this,A) 2115 #define ID2D1PathGeometry_Stream(this,A) (this)->lpVtbl->Stream(this,A) 2116 #define ID2D1PathGeometry_GetSegmentCount(this,A) (this)->lpVtbl->GetSegmentCount(this,A) 2117 #define ID2D1PathGeometry_GetFigureCount(this,A) (this)->lpVtbl->GetFigureCount(this,A) 2118 2119 #endif 2120 2121 DEFINE_GUID(IID_ID2D1RadialGradientBrush, 0x2cd906ac,0x12e2,0x11dc,0x9f,0xed,0x00,0x11,0x43,0xa0,0x55,0xf9); 2122 2123 #ifndef D2D_USE_C_DEFINITIONS 2124 2125 interface ID2D1RadialGradientBrush : public ID2D1Brush { 2126 STDMETHOD_(void, SetCenter)(D2D1_POINT_2F center) PURE; 2127 STDMETHOD_(void, SetGradientOriginOffset)(D2D1_POINT_2F gradientOriginOffset) PURE; 2128 STDMETHOD_(void, SetRadiusX)(FLOAT radiusX) PURE; 2129 STDMETHOD_(void, SetRadiusY)(FLOAT radiusY) PURE; 2130 2131 #ifndef WIDL_EXPLICIT_AGGREGATE_RETURNS 2132 STDMETHOD_(D2D1_POINT_2F, GetCenter)(void) const PURE; 2133 #else 2134 virtual D2D1_POINT_2F* STDMETHODCALLTYPE GetCenter(D2D1_POINT_2F *__ret) const = 0; 2135 D2D1_POINT_2F STDMETHODCALLTYPE GetCenter() const 2136 { 2137 D2D1_POINT_2F __ret; 2138 GetCenter(&__ret); 2139 return __ret; 2140 } 2141 #endif 2142 2143 #ifndef WIDL_EXPLICIT_AGGREGATE_RETURNS 2144 STDMETHOD_(D2D1_POINT_2F, GetGradientOriginOffset)(void) const PURE; 2145 #else 2146 virtual D2D1_POINT_2F* STDMETHODCALLTYPE GetGradientOriginOffset(D2D1_POINT_2F *__ret) const = 0; 2147 D2D1_POINT_2F STDMETHODCALLTYPE GetGradientOriginOffset() const 2148 { 2149 D2D1_POINT_2F __ret; 2150 GetGradientOriginOffset(&__ret); 2151 return __ret; 2152 } 2153 #endif 2154 2155 STDMETHOD_(FLOAT, GetRadiusX)(void) const PURE; 2156 STDMETHOD_(FLOAT, GetRadiusY)(void) const PURE; 2157 STDMETHOD_(void, GetGradientStopCollection)(ID2D1GradientStopCollection **gradientStopCollection) const PURE; 2158 }; 2159 2160 #else 2161 2162 typedef struct ID2D1RadialGradientBrushVtbl { 2163 ID2D1BrushVtbl Base; 2164 2165 STDMETHOD_(void, SetCenter)(ID2D1RadialGradientBrush *This, D2D1_POINT_2F center) PURE; 2166 STDMETHOD_(void, SetGradientOriginOffset)(ID2D1RadialGradientBrush *This, D2D1_POINT_2F gradientOriginOffset) PURE; 2167 STDMETHOD_(void, SetRadiusX)(ID2D1RadialGradientBrush *This, FLOAT radiusX) PURE; 2168 STDMETHOD_(void, SetRadiusY)(ID2D1RadialGradientBrush *This, FLOAT radiusY) PURE; 2169 STDMETHOD_(D2D1_POINT_2F, GetCenter)(ID2D1RadialGradientBrush *This) PURE; 2170 STDMETHOD_(D2D1_POINT_2F, GetGradientOriginOffset)(ID2D1RadialGradientBrush *This) PURE; 2171 STDMETHOD_(FLOAT, GetRadiusX)(ID2D1RadialGradientBrush *This) PURE; 2172 STDMETHOD_(FLOAT, GetRadiusY)(ID2D1RadialGradientBrush *This) PURE; 2173 STDMETHOD_(void, GetGradientStopCollection)(ID2D1RadialGradientBrush *This, ID2D1GradientStopCollection **gradientStopCollection) PURE; 2174 } ID2D1RadialGradientBrushVtbl; 2175 2176 interface ID2D1RadialGradientBrush { 2177 const ID2D1RadialGradientBrushVtbl *lpVtbl; 2178 }; 2179 2180 #define ID2D1RadialGradientBrush_QueryInterface(this,A,B) (this)->lpVtbl->Base.Base.Base.QueryInterface((IUnknown*)(this),A,B) 2181 #define ID2D1RadialGradientBrush_AddRef(this) (this)->lpVtbl->Base.Base.Base.AddRef((IUnknown*)(this)) 2182 #define ID2D1RadialGradientBrush_Release(this) (this)->lpVtbl->Base.Base.Base.Release((IUnknown*)(this)) 2183 #define ID2D1RadialGradientBrush_GetFactory(this,A) (this)->lpVtbl->Base.Base.GetFactory((ID2D1Resource*)(this),A) 2184 #define ID2D1RadialGradientBrush_SetOpacity(this,A) (this)->lpVtbl->Base.SetOpacity((ID2D1Brush*)(this),A) 2185 #define ID2D1RadialGradientBrush_SetTransform(this,A) (this)->lpVtbl->Base.SetTransform((ID2D1Brush*)(this),A) 2186 #define ID2D1RadialGradientBrush_GetOpacity(this) (this)->lpVtbl->Base.GetOpacity((ID2D1Brush*)(this)) 2187 #define ID2D1RadialGradientBrush_GetTransform(this,A) (this)->lpVtbl->Base.GetTransform((ID2D1Brush*)(this),A) 2188 #define ID2D1RadialGradientBrush_GetCenter(this) (this)->lpVtbl->GetCenter(this) 2189 #define ID2D1RadialGradientBrush_GetGradientOriginOffset(this) (this)->lpVtbl->GetGradientOriginOffset(this) 2190 #define ID2D1RadialGradientBrush_GetGradientStopCollection(this,A) (this)->lpVtbl->GetGradientStopCollection(this,A) 2191 #define ID2D1RadialGradientBrush_GetRadiusX(this) (this)->lpVtbl->GetRadiusX(this) 2192 #define ID2D1RadialGradientBrush_GetRadiusY(this) (this)->lpVtbl->GetRadiusY(this) 2193 #define ID2D1RadialGradientBrush_SetCenter(this,A) (this)->lpVtbl->SetCenter(this,A) 2194 #define ID2D1RadialGradientBrush_SetGradientOriginOffset(this,A) (this)->lpVtbl->SetGradientOriginOffset(this,A) 2195 #define ID2D1RadialGradientBrush_SetRadiusX(this,A) (this)->lpVtbl->SetRadiusX(this,A) 2196 #define ID2D1RadialGradientBrush_SetRadiusY(this,A) (this)->lpVtbl->SetRadiusY(this,A) 2197 2198 #endif 2199 2200 DEFINE_GUID(IID_ID2D1RectangleGeometry, 0x2cd906a2,0x12e2,0x11dc,0x9f,0xed,0x00,0x11,0x43,0xa0,0x55,0xf9); 2201 2202 #ifndef D2D_USE_C_DEFINITIONS 2203 2204 interface ID2D1RectangleGeometry : public ID2D1Geometry { 2205 STDMETHOD_(void, GetRect)(D2D1_RECT_F *rect) const PURE; 2206 }; 2207 2208 #else 2209 2210 typedef struct ID2D1RectangleGeometryVtbl { 2211 ID2D1GeometryVtbl Base; 2212 2213 STDMETHOD_(void, GetRect)(ID2D1RectangleGeometry *This, D2D1_RECT_F *rect) PURE; 2214 } ID2D1RectangleGeometryVtbl; 2215 2216 interface ID2D1RectangleGeometry { 2217 const ID2D1RectangleGeometryVtbl *lpVtbl; 2218 }; 2219 2220 #define ID2D1RectangleGeometry_QueryInterface(this,A,B) (this)->lpVtbl->Base.Base.Base.QueryInterface((IUnknown*)(this),A,B) 2221 #define ID2D1RectangleGeometry_AddRef(this) (this)->lpVtbl->Base.Base.Base.AddRef((IUnknown*)(this)) 2222 #define ID2D1RectangleGeometry_Release(this) (this)->lpVtbl->Base.Base.Base.Release((IUnknown*)(this)) 2223 #define ID2D1RectangleGeometry_GetFactory(this,A) (this)->lpVtbl->Base.Base.GetFactory((ID2D1Resource*)(this),A) 2224 #define ID2D1RectangleGeometry_GetBounds(this,A,B) (this)->lpVtbl->Base.GetBounds((ID2D1Geometry*)(this),A,B) 2225 #define ID2D1RectangleGeometry_GetWidenedBounds(this,A,B,C,D,E) (this)->lpVtbl->Base.GetWidenedBounds((ID2D1Geometry*)(this),A,B,C,D,E) 2226 #define ID2D1RectangleGeometry_StrokeContainsPoint(this,A,B,C,D,E,F) (this)->lpVtbl->Base.StrokeContainsPoint((ID2D1Geometry*)(this),A,B,C,D,E,F) 2227 #define ID2D1RectangleGeometry_FillContainsPoint(this,A,B,C,D) (this)->lpVtbl->Base.FillContainsPoint((ID2D1Geometry*)(this),A,B,C,D) 2228 #define ID2D1RectangleGeometry_CompareWithGeometry(this,A,B,C,D) (this)->lpVtbl->Base.CompareWithGeometry((ID2D1Geometry*)(this),A,B,C,D) 2229 #define ID2D1RectangleGeometry_Simplify(this,A,B,C,D) (this)->lpVtbl->Base.Simplify((ID2D1Geometry*)(this),A,B,C,D) 2230 #define ID2D1RectangleGeometry_Tessellate(this,A,B,C) (this)->lpVtbl->Base.Tessellate((ID2D1Geometry*)(this),A,B,C) 2231 #define ID2D1RectangleGeometry_CombineWithGeometry(this,A,B,C,D,E) (this)->lpVtbl->Base.CombineWithGeometry((ID2D1Geometry*)(this),A,B,C,D,E) 2232 #define ID2D1RectangleGeometry_Outline(this,A,B,C) (this)->lpVtbl->Base.Outline((ID2D1Geometry*)(this),A,B,C) 2233 #define ID2D1RectangleGeometry_ComputeArea(this,A,B,C) (this)->lpVtbl->Base.ComputeArea((ID2D1Geometry*)(this),A,B,C) 2234 #define ID2D1RectangleGeometry_ComputeLength(this,A,B,C) (this)->lpVtbl->Base.ComputeLength((ID2D1Geometry*)(this),A,B,C) 2235 #define ID2D1RectangleGeometry_ComputePointAtLength(this,A,B,C,D,E) (this)->lpVtbl->Base.ComputePointAtLength((ID2D1Geometry*)(this),A,B,C,D,E) 2236 #define ID2D1RectangleGeometry_Widen(this,A,B,C,D,E) (this)->lpVtbl->Base.Widen((ID2D1Geometry*)(this),A,B,C,D,E) 2237 #define ID2D1RectangleGeometry_GetRect(this,A) (this)->lpVtbl->GetRect(this,A) 2238 2239 #endif 2240 2241 DEFINE_GUID(IID_ID2D1RoundedRectangleGeometry, 0x2cd906a3,0x12e2,0x11dc,0x9f,0xed,0x00,0x11,0x43,0xa0,0x55,0xf9); 2242 2243 #ifndef D2D_USE_C_DEFINITIONS 2244 2245 interface ID2D1RoundedRectangleGeometry : public ID2D1Geometry { 2246 STDMETHOD_(void, GetRoundedRect)(D2D1_ROUNDED_RECT *roundedRect) const PURE; 2247 }; 2248 2249 #else 2250 2251 typedef struct ID2D1RoundedRectangleGeometryVtbl { 2252 ID2D1GeometryVtbl Base; 2253 2254 STDMETHOD_(void, GetRoundedRect)(ID2D1RoundedRectangleGeometry *This, D2D1_ROUNDED_RECT *roundedRect) PURE; 2255 } ID2D1RoundedRectangleGeometryVtbl; 2256 2257 interface ID2D1RoundedRectangleGeometry { 2258 const struct ID2D1RoundedRectangleGeometryVtbl *lpVtbl; 2259 }; 2260 2261 #define ID2D1RoundedRectangleGeometry_QueryInterface(this,A,B) (this)->lpVtbl->Base.Base.Base.QueryInterface((IUnknown*)(this),A,B) 2262 #define ID2D1RoundedRectangleGeometry_AddRef(this) (this)->lpVtbl->Base.Base.Base.AddRef((IUnknown*)(this)) 2263 #define ID2D1RoundedRectangleGeometry_Release(this) (this)->lpVtbl->Base.Base.Base.Release((IUnknown*)(this)) 2264 #define ID2D1RoundedRectangleGeometry_GetFactory(this,A) (this)->lpVtbl->Base.Base.GetFactory((ID2D1Resource*)(this),A) 2265 #define ID2D1RoundedRectangleGeometry_GetBounds(this,A,B) (this)->lpVtbl->Base.GetBounds((ID2D1Geometry*)(this),A,B) 2266 #define ID2D1RoundedRectangleGeometry_GetWidenedBounds(this,A,B,C,D,E) (this)->lpVtbl->Base.GetWidenedBounds((ID2D1Geometry*)(this),A,B,C,D,E) 2267 #define ID2D1RoundedRectangleGeometry_StrokeContainsPoint(this,A,B,C,D,E,F) (this)->lpVtbl->Base.StrokeContainsPoint((ID2D1Geometry*)(this),A,B,C,D,E,F) 2268 #define ID2D1RoundedRectangleGeometry_FillContainsPoint(this,A,B,C,D) (this)->lpVtbl->Base.FillContainsPoint((ID2D1Geometry*)(this),A,B,C,D) 2269 #define ID2D1RoundedRectangleGeometry_CompareWithGeometry(this,A,B,C,D) (this)->lpVtbl->Base.CompareWithGeometry((ID2D1Geometry*)(this),A,B,C,D) 2270 #define ID2D1RoundedRectangleGeometry_Simplify(this,A,B,C,D) (this)->lpVtbl->Base.Simplify((ID2D1Geometry*)(this),A,B,C,D) 2271 #define ID2D1RoundedRectangleGeometry_Tessellate(this,A,B,C) (this)->lpVtbl->Base.Tessellate((ID2D1Geometry*)(this),A,B,C) 2272 #define ID2D1RoundedRectangleGeometry_CombineWithGeometry(this,A,B,C,D,E) (this)->lpVtbl->Base.CombineWithGeometry((ID2D1Geometry*)(this),A,B,C,D,E) 2273 #define ID2D1RoundedRectangleGeometry_Outline(this,A,B,C) (this)->lpVtbl->Base.Outline((ID2D1Geometry*)(this),A,B,C) 2274 #define ID2D1RoundedRectangleGeometry_ComputeArea(this,A,B,C) (this)->lpVtbl->Base.ComputeArea((ID2D1Geometry*)(this),A,B,C) 2275 #define ID2D1RoundedRectangleGeometry_ComputeLength(this,A,B,C) (this)->lpVtbl->Base.ComputeLength((ID2D1Geometry*)(this),A,B,C) 2276 #define ID2D1RoundedRectangleGeometry_ComputePointAtLength(this,A,B,C,D,E) (this)->lpVtbl->Base.ComputePointAtLength((ID2D1Geometry*)(this),A,B,C,D,E) 2277 #define ID2D1RoundedRectangleGeometry_Widen(this,A,B,C,D,E) (this)->lpVtbl->Base.Widen((ID2D1Geometry*)(this),A,B,C,D,E) 2278 #define ID2D1RoundedRectangleGeometry_GetRoundedRect(this,A) (this)->lpVtbl->GetRoundedRect(this,A) 2279 2280 #endif 2281 2282 DEFINE_GUID(IID_ID2D1SolidColorBrush, 0x2cd906a9,0x12e2,0x11dc,0x9f,0xed,0x00,0x11,0x43,0xa0,0x55,0xf9); 2283 2284 #ifndef D2D_USE_C_DEFINITIONS 2285 2286 interface ID2D1SolidColorBrush : public ID2D1Brush { 2287 STDMETHOD_(void, SetColor)(const D2D1_COLOR_F *color) PURE; 2288 2289 #ifndef WIDL_EXPLICIT_AGGREGATE_RETURNS 2290 STDMETHOD_(D2D1_COLOR_F, GetColor)(void) const PURE; 2291 #else 2292 virtual D2D1_COLOR_F* STDMETHODCALLTYPE GetColor(D2D1_COLOR_F*) const = 0; 2293 D2D1_COLOR_F STDMETHODCALLTYPE GetColor() const { 2294 D2D1_COLOR_F __ret; 2295 GetColor(&__ret); 2296 return __ret; 2297 } 2298 #endif 2299 2300 void SetColor(const D2D1_COLOR_F &color) { 2301 SetColor(&color); 2302 } 2303 }; 2304 2305 #else 2306 2307 typedef struct ID2D1SolidColorBrushVtbl { 2308 ID2D1BrushVtbl Base; 2309 2310 STDMETHOD_(void, SetColor)(ID2D1SolidColorBrush *This, const D2D1_COLOR_F *color) PURE; 2311 STDMETHOD_(D2D1_COLOR_F, GetColor)(ID2D1SolidColorBrush *This) PURE; 2312 } ID2D1SolidColorBrushVtbl; 2313 2314 interface ID2D1SolidColorBrush { 2315 const ID2D1SolidColorBrushVtbl *lpVtbl; 2316 }; 2317 2318 #define ID2D1SolidColorBrush_QueryInterface(this,A,B) (this)->lpVtbl->Base.Base.Base.QueryInterface((IUnknown*)(this),A,B) 2319 #define ID2D1SolidColorBrush_AddRef(this) (this)->lpVtbl->Base.Base.Base.AddRef((IUnknown*)(this)) 2320 #define ID2D1SolidColorBrush_Release(this) (this)->lpVtbl->Base.Base.Base.Release((IUnknown*)(this)) 2321 #define ID2D1SolidColorBrush_GetFactory(this,A) (this)->lpVtbl->Base.Base.GetFactory((ID2D1Resource*)(this),A) 2322 #define ID2D1SolidColorBrush_SetOpacity(this,A) (this)->lpVtbl->Base.SetOpacity((ID2D1Brush*)(this),A) 2323 #define ID2D1SolidColorBrush_SetTransform(this,A) (this)->lpVtbl->Base.SetTransform((ID2D1Brush*)(this),A) 2324 #define ID2D1SolidColorBrush_GetOpacity(this) (this)->lpVtbl->Base.GetOpacity((ID2D1Brush*)(this)) 2325 #define ID2D1SolidColorBrush_GetTransform(this,A) (this)->lpVtbl->Base.GetTransform((ID2D1Brush*)(this),A) 2326 #define ID2D1SolidColorBrush_GetColor(this) (this)->lpVtbl->GetColor(this) 2327 #define ID2D1SolidColorBrush_SetColor(this,A) (this)->lpVtbl->SetColor(this,A) 2328 2329 #endif 2330 2331 DEFINE_GUID(IID_ID2D1StrokeStyle, 0x2cd9069d,0x12e2,0x11dc,0x9f,0xed,0x00,0x11,0x43,0xa0,0x55,0xf9); 2332 2333 #ifndef D2D_USE_C_DEFINITIONS 2334 2335 interface ID2D1StrokeStyle : public ID2D1Resource { 2336 STDMETHOD_(D2D1_CAP_STYLE, GetStartCap)(void) const PURE; 2337 STDMETHOD_(D2D1_CAP_STYLE, GetEndCap)(void) const PURE; 2338 STDMETHOD_(D2D1_CAP_STYLE, GetDashCap)(void) const PURE; 2339 STDMETHOD_(FLOAT, GetMiterLimit)(void) const PURE; 2340 STDMETHOD_(D2D1_LINE_JOIN, GetLineJoin)(void) const PURE; 2341 STDMETHOD_(FLOAT, GetDashOffset)(void) const PURE; 2342 STDMETHOD_(D2D1_DASH_STYLE, GetDashStyle)(void) const PURE; 2343 STDMETHOD_(UINT32, GetDashesCount)(void) const PURE; 2344 STDMETHOD_(void, GetDashes)(FLOAT *dashes, UINT dashesCount) const PURE; 2345 }; 2346 2347 #else 2348 2349 typedef struct ID2D1StrokeStyleVtbl { 2350 ID2D1ResourceVtbl Base; 2351 2352 STDMETHOD_(D2D1_CAP_STYLE, GetStartCap)(ID2D1StrokeStyle *This) PURE; 2353 STDMETHOD_(D2D1_CAP_STYLE, GetEndCap)(ID2D1StrokeStyle *This) PURE; 2354 STDMETHOD_(D2D1_CAP_STYLE, GetDashCap)(ID2D1StrokeStyle *This) PURE; 2355 STDMETHOD_(FLOAT, GetMiterLimit)(ID2D1StrokeStyle *This) PURE; 2356 STDMETHOD_(D2D1_LINE_JOIN, GetLineJoin)(ID2D1StrokeStyle *This) PURE; 2357 STDMETHOD_(FLOAT, GetDashOffset)(ID2D1StrokeStyle *This) PURE; 2358 STDMETHOD_(D2D1_DASH_STYLE, GetDashStyle)(ID2D1StrokeStyle *This) PURE; 2359 STDMETHOD_(UINT32, GetDashesCount)(ID2D1StrokeStyle *This) PURE; 2360 STDMETHOD_(void, GetDashes)(ID2D1StrokeStyle *This, FLOAT *dashes, UINT dashesCount) PURE; 2361 } ID2D1StrokeStyleVtbl; 2362 2363 interface ID2D1StrokeStyle { 2364 const ID2D1StrokeStyleVtbl *lpVtbl; 2365 }; 2366 2367 #define ID2D1StrokeStyle_QueryInterface(this,A,B) (this)->lpVtbl->Base.Base.QueryInterface((IUnknown*)(this),A,B) 2368 #define ID2D1StrokeStyle_AddRef(this) (this)->lpVtbl->Base.Base.AddRef((IUnknown*)(this)) 2369 #define ID2D1StrokeStyle_Release(this) (this)->lpVtbl->Base.Base.Release((IUnknown*)(this)) 2370 #define ID2D1StrokeStyle_GetFactory(this,A) (this)->lpVtbl->Base.GetFactory((ID2D1Resource*)(this),A) 2371 #define ID2D1StrokeStyle_GetDashCap(this) (this)->lpVtbl->GetDashCap(this) 2372 #define ID2D1StrokeStyle_GetDashes(this,A,B) (this)->lpVtbl->GetDashes(this,A,B) 2373 #define ID2D1StrokeStyle_GetDashesCount(this) (this)->lpVtbl->GetDashesCount(this) 2374 #define ID2D1StrokeStyle_GetDashOffset(this) (this)->lpVtbl->GetDashOffset(this) 2375 #define ID2D1StrokeStyle_GetDashStyle(this) (this)->lpVtbl->GetDashStyle(this) 2376 #define ID2D1StrokeStyle_GetEndCap(this) (this)->lpVtbl->GetEndCap(this) 2377 #define ID2D1StrokeStyle_GetLineJoin(this) (this)->lpVtbl->GetLineJoin(this) 2378 #define ID2D1StrokeStyle_GetMiterLimit(this) (this)->lpVtbl->GetMiterLimit(this) 2379 #define ID2D1StrokeStyle_GetStartCap(this) (this)->lpVtbl->GetStartCap(this) 2380 2381 #endif 2382 2383 DEFINE_GUID(IID_ID2D1TessellationSink, 0x2cd906c1,0x12e2,0x11dc,0x9f,0xed,0x00,0x11,0x43,0xa0,0x55,0xf9); 2384 2385 #ifndef D2D_USE_C_DEFINITIONS 2386 2387 interface ID2D1TessellationSink : public IUnknown { 2388 STDMETHOD_(void, AddTriangles)(const D2D1_TRIANGLE *triangles, UINT trianglesCount) PURE; 2389 STDMETHOD(Close)() PURE; 2390 }; 2391 2392 #else 2393 2394 typedef struct ID2D1TessellationSinkVtbl { 2395 IUnknownVtbl Base; 2396 2397 STDMETHOD_(void, AddTriangles)(ID2D1TessellationSink *This, const D2D1_TRIANGLE *triangles, UINT trianglesCount) PURE; 2398 STDMETHOD(Close)(ID2D1TessellationSink *This) PURE; 2399 } ID2D1TessellationSinkVtbl; 2400 2401 interface ID2D1TessellationSink { 2402 const struct ID2D1TessellationSinkVtbl *lpVtbl; 2403 }; 2404 2405 #define ID2D1TessellationSink_QueryInterface(this,A,B) (this)->lpVtbl->Base.QueryInterface((IUnknown*)(this),A,B) 2406 #define ID2D1TessellationSink_AddRef(this) (this)->lpVtbl->Base.AddRef((IUnknown*)(this)) 2407 #define ID2D1TessellationSink_Release(this) (this)->lpVtbl->Base.Release((IUnknown*)(this)) 2408 #define ID2D1TessellationSink_AddTriangles(this,A,B) (this)->lpVtbl->AddTriangles(this,A,B) 2409 #define ID2D1TessellationSink_Close(this) (this)->lpVtbl->Close(this) 2410 2411 #endif 2412 2413 DEFINE_GUID(IID_ID2D1TransformedGeometry, 0x2cd906bb,0x12e2,0x11dc,0x9f,0xed,0x00,0x11,0x43,0xa0,0x55,0xf9); 2414 2415 #ifndef D2D_USE_C_DEFINITIONS 2416 2417 interface ID2D1TransformedGeometry : public ID2D1Geometry { 2418 STDMETHOD_(void, GetSourceGeometry)(ID2D1Geometry **sourceGeometry) const PURE; 2419 STDMETHOD_(void, GetTransform)(D2D1_MATRIX_3X2_F *transform) const PURE; 2420 }; 2421 2422 #else 2423 2424 typedef struct ID2D1TransformedGeometryVtbl { 2425 ID2D1GeometryVtbl Base; 2426 2427 STDMETHOD_(void, GetSourceGeometry)(ID2D1TransformedGeometry *This, ID2D1Geometry **sourceGeometry) PURE; 2428 STDMETHOD_(void, GetTransform)(ID2D1TransformedGeometry *This, D2D1_MATRIX_3X2_F *transform) PURE; 2429 } ID2D1TransformedGeometryVtbl; 2430 2431 interface ID2D1TransformedGeometry { 2432 const ID2D1TransformedGeometryVtbl *lpVtbl; 2433 }; 2434 2435 #define ID2D1TransformedGeometry_QueryInterface(this,A,B) (this)->lpVtbl->Base.Base.Base.QueryInterface((IUnknown*)(this),A,B) 2436 #define ID2D1TransformedGeometry_AddRef(this) (this)->lpVtbl->Base.Base.Base.AddRef((IUnknown*)(this)) 2437 #define ID2D1TransformedGeometry_Release(this) (this)->lpVtbl->Base.Base.Base.Release((IUnknown*)(this)) 2438 #define ID2D1TransformedGeometry_GetFactory(this,A) (this)->lpVtbl->Base.Base.GetFactory((ID2D1Resource*)(this),A) 2439 #define ID2D1TransformedGeometry_GetBounds(this,A,B) (this)->lpVtbl->Base.GetBounds((ID2D1Geometry*)(this),A,B) 2440 #define ID2D1TransformedGeometry_GetWidenedBounds(this,A,B,C,D,E) (this)->lpVtbl->Base.GetWidenedBounds((ID2D1Geometry*)(this),A,B,C,D,E) 2441 #define ID2D1TransformedGeometry_StrokeContainsPoint(this,A,B,C,D,E,F) (this)->lpVtbl->Base.StrokeContainsPoint((ID2D1Geometry*)(this),A,B,C,D,E,F) 2442 #define ID2D1TransformedGeometry_FillContainsPoint(this,A,B,C,D) (this)->lpVtbl->Base.FillContainsPoint((ID2D1Geometry*)(this),A,B,C,D) 2443 #define ID2D1TransformedGeometry_CompareWithGeometry(this,A,B,C,D) (this)->lpVtbl->Base.CompareWithGeometry((ID2D1Geometry*)(this),A,B,C,D) 2444 #define ID2D1TransformedGeometry_Simplify(this,A,B,C,D) (this)->lpVtbl->Base.Simplify((ID2D1Geometry*)(this),A,B,C,D) 2445 #define ID2D1TransformedGeometry_Tessellate(this,A,B,C) (this)->lpVtbl->Base.Tessellate((ID2D1Geometry*)(this),A,B,C) 2446 #define ID2D1TransformedGeometry_CombineWithGeometry(this,A,B,C,D,E) (this)->lpVtbl->Base.CombineWithGeometry((ID2D1Geometry*)(this),A,B,C,D,E) 2447 #define ID2D1TransformedGeometry_Outline(this,A,B,C) (this)->lpVtbl->Base.Outline((ID2D1Geometry*)(this),A,B,C) 2448 #define ID2D1TransformedGeometry_ComputeArea(this,A,B,C) (this)->lpVtbl->Base.ComputeArea((ID2D1Geometry*)(this),A,B,C) 2449 #define ID2D1TransformedGeometry_ComputeLength(this,A,B,C) (this)->lpVtbl->Base.ComputeLength((ID2D1Geometry*)(this),A,B,C) 2450 #define ID2D1TransformedGeometry_ComputePointAtLength(this,A,B,C,D,E) (this)->lpVtbl->Base.ComputePointAtLength((ID2D1Geometry*)(this),A,B,C,D,E) 2451 #define ID2D1TransformedGeometry_Widen(this,A,B,C,D,E) (this)->lpVtbl->Base.Widen((ID2D1Geometry*)(this),A,B,C,D,E) 2452 #define ID2D1TransformedGeometry_GetSourceGeometry(this,A) (this)->lpVtbl->GetSourceGeometry(this,A) 2453 #define ID2D1TransformedGeometry_GetTransform(this,A) (this)->lpVtbl->GetTransform(this,A) 2454 2455 #endif 2456 2457 __CRT_UUID_DECL(ID2D1Resource, 0x2cd90691,0x12e2,0x11dc,0x9f,0xed,0x00,0x11,0x43,0xa0,0x55,0xf9) 2458 __CRT_UUID_DECL(ID2D1Brush, 0x2cd906a8,0x12e2,0x11dc,0x9f,0xed,0x00,0x11,0x43,0xa0,0x55,0xf9) 2459 __CRT_UUID_DECL(ID2D1Bitmap, 0xa2296057,0xea42,0x4099,0x98,0x3b,0x53,0x9f,0xb6,0x50,0x54,0x26) 2460 __CRT_UUID_DECL(ID2D1BitmapBrush, 0x2cd906aa,0x12e2,0x11dc,0x9f,0xed,0x00,0x11,0x43,0xa0,0x55,0xf9) 2461 __CRT_UUID_DECL(ID2D1RenderTarget, 0x2cd90694,0x12e2,0x11dc,0x9f,0xed,0x00,0x11,0x43,0xa0,0x55,0xf9) 2462 __CRT_UUID_DECL(ID2D1Geometry, 0x2cd906a1,0x12e2,0x11dc,0x9f,0xed,0x00,0x11,0x43,0xa0,0x55,0xf9) 2463 __CRT_UUID_DECL(ID2D1BitmapRenderTarget, 0x2cd90695,0x12e2,0x11dc,0x9f,0xed,0x00,0x11,0x43,0xa0,0x55,0xf9) 2464 __CRT_UUID_DECL(ID2D1DCRenderTarget, 0x1c51bc64,0xde61,0x46fd,0x98,0x99,0x63,0xa5,0xd8,0xf0,0x39,0x50) 2465 __CRT_UUID_DECL(ID2D1SimplifiedGeometrySink, 0x2cd9069e,0x12e2,0x11dc,0x9f,0xed,0x00,0x11,0x43,0xa0,0x55,0xf9) 2466 __CRT_UUID_DECL(ID2D1Factory, 0x06152247,0x6f50,0x465a,0x92,0x45,0x11,0x8b,0xfd,0x3b,0x60,0x07) 2467 __CRT_UUID_DECL(ID2D1GdiInteropRenderTarget, 0xe0db51c3,0x6f77,0x4bae,0xb3,0xd5,0xe4,0x75,0x09,0xb3,0x58,0x38) 2468 __CRT_UUID_DECL(ID2D1GeometrySink, 0x2cd9069f,0x12e2,0x11dc,0x9f,0xed,0x00,0x11,0x43,0xa0,0x55,0xf9) 2469 __CRT_UUID_DECL(ID2D1GradientStopCollection, 0x2cd906a7,0x12e2,0x11dc,0x9f,0xed,0x00,0x11,0x43,0xa0,0x55,0xf9) 2470 __CRT_UUID_DECL(ID2D1Layer, 0x2cd9069b,0x12e2,0x11dc,0x9f,0xed,0x00,0x11,0x43,0xa0,0x55,0xf9) 2471 __CRT_UUID_DECL(ID2D1LinearGradientBrush, 0x2cd906ab,0x12e2,0x11dc,0x9f,0xed,0x00,0x11,0x43,0xa0,0x55,0xf9) 2472 __CRT_UUID_DECL(ID2D1PathGeometry, 0x2cd906a5,0x12e2,0x11dc,0x9f,0xed,0x00,0x11,0x43,0xa0,0x55,0xf9) 2473 __CRT_UUID_DECL(ID2D1RadialGradientBrush, 0x2cd906ac,0x12e2,0x11dc,0x9f,0xed,0x00,0x11,0x43,0xa0,0x55,0xf9) 2474 __CRT_UUID_DECL(ID2D1RectangleGeometry, 0x2cd906a2,0x12e2,0x11dc,0x9f,0xed,0x00,0x11,0x43,0xa0,0x55,0xf9) 2475 __CRT_UUID_DECL(ID2D1SolidColorBrush, 0x2cd906a9,0x12e2,0x11dc,0x9f,0xed,0x00,0x11,0x43,0xa0,0x55,0xf9) 2476 __CRT_UUID_DECL(ID2D1StrokeStyle, 0x2cd9069d,0x12e2,0x11dc,0x9f,0xed,0x00,0x11,0x43,0xa0,0x55,0xf9) 2477 __CRT_UUID_DECL(ID2D1TransformedGeometry, 0x2cd906bb,0x12e2,0x11dc,0x9f,0xed,0x00,0x11,0x43,0xa0,0x55,0xf9) 2478 __CRT_UUID_DECL(ID2D1Mesh,0x2cd906c2,0x12e2,0x11dc,0x9f,0xed,0x00,0x11,0x43,0xa0,0x55,0xf9); 2479 __CRT_UUID_DECL(ID2D1DrawingStateBlock, 0x28506e39,0xebf6,0x46a1,0xbb,0x47,0xfd,0x85,0x56,0x5a,0xb9,0x57); 2480 __CRT_UUID_DECL(ID2D1EllipseGeometry, 0x2cd906a4,0x12e2,0x11dc,0x9f,0xed,0x00,0x11,0x43,0xa0,0x55,0xf9); 2481 __CRT_UUID_DECL(ID2D1GeometryGroup, 0x2cd906a6,0x12e2,0x11dc,0x9f,0xed,0x00,0x11,0x43,0xa0,0x55,0xf9); 2482 __CRT_UUID_DECL(ID2D1RoundedRectangleGeometry, 0x2cd906a3,0x12e2,0x11dc,0x9f,0xed,0x00,0x11,0x43,0xa0,0x55,0xf9); 2483 __CRT_UUID_DECL(ID2D1TessellationSink, 0x2cd906c1,0x12e2,0x11dc,0x9f,0xed,0x00,0x11,0x43,0xa0,0x55,0xf9); 2484 __CRT_UUID_DECL(ID2D1Image, 0x65019f75,0x8da2,0x497c,0xb3,0x2c,0xdf,0xa3,0x4e,0x48,0xed,0xe6); 2485 2486 #ifdef __cplusplus 2487 extern "C" { 2488 #endif 2489 2490 HRESULT WINAPI D2D1CreateFactory( 2491 D2D1_FACTORY_TYPE factoryType, 2492 REFIID riid, 2493 const D2D1_FACTORY_OPTIONS *pFactoryOptions, 2494 void **ppIFactory 2495 ); 2496 2497 WINBOOL WINAPI D2D1InvertMatrix( 2498 D2D1_MATRIX_3X2_F *matrix 2499 ); 2500 2501 WINBOOL WINAPI D2D1IsMatrixInvertible( 2502 const D2D1_MATRIX_3X2_F *matrix 2503 ); 2504 2505 void WINAPI D2D1MakeRotateMatrix( 2506 FLOAT angle, 2507 D2D1_POINT_2F center, 2508 D2D1_MATRIX_3X2_F *matrix 2509 ); 2510 2511 void WINAPI D2D1MakeSkewMatrix( 2512 FLOAT angleX, 2513 FLOAT angleY, 2514 D2D1_POINT_2F center, 2515 D2D1_MATRIX_3X2_F *matrix 2516 ); 2517 #ifdef __cplusplus 2518 } 2519 #endif 2520 2521 #ifndef D2D1FORCEINLINE 2522 #define D2D1FORCEINLINE FORCEINLINE 2523 #endif 2524 2525 #include <d2d1helper.h> 2526 2527 #ifndef D2D_USE_C_DEFINITIONS 2528 2529 inline HRESULT D2D1CreateFactory(D2D1_FACTORY_TYPE factoryType, REFIID riid, void **ppv) { 2530 return D2D1CreateFactory(factoryType, riid, NULL, ppv); 2531 } 2532 2533 template<class Factory> 2534 HRESULT D2D1CreateFactory(D2D1_FACTORY_TYPE factoryType, Factory **factory) { 2535 return D2D1CreateFactory(factoryType, __uuidof(Factory), reinterpret_cast<void**>(factory)); 2536 } 2537 2538 template<class Factory> 2539 HRESULT D2D1CreateFactory(D2D1_FACTORY_TYPE factoryType, const D2D1_FACTORY_OPTIONS &factoryOptions, Factory **factory) { 2540 return D2D1CreateFactory(factoryType, __uuidof(Factory), &factoryOptions, reinterpret_cast<void **>(factory)); 2541 } 2542 2543 #endif 2544 2545 #endif /* _D2D1_H */