1 module aurora.directx.dwrite.dwrite_0; 2 3 public import std.bitmanip; 4 public import aurora.directx.com; 5 public import aurora.directx.d2d1; 6 7 /// 8 /// Constants 9 /// 10 11 /// 12 /// Functions 13 /// 14 15 public extern(C) HRESULT DWriteCreateFactory(DWRITE_FACTORY_TYPE FactoryType, GUID IID, IUnknown* Factory); 16 17 uint DWRITE_MAKE_OPENTYPE_TAG(char a, char b, char c, char d) { 18 return ((cast(uint)(cast(ubyte)d) << 24) | (cast(uint)(cast(ubyte)c) << 16) | (cast(uint)(cast(ubyte)b) << 8) | cast(uint)(cast(ubyte)a)); 19 } 20 alias DWRITE_MAKE_OPENTYPE_TAG DWRITE_MAKE_FONT_FEATURE_TAG; 21 22 /// 23 /// Enumerations 24 /// 25 26 public enum DWRITE_BREAK_CONDITION : int { 27 NEUTRAL = 0, 28 CAN_BREAK = 1, 29 MAY_NOT_BREAK = 2, 30 MUST_BREAK = 3, 31 } 32 33 public enum DWRITE_FACTORY_TYPE : int { 34 SHARED, 35 ISOLATED, 36 } 37 38 public enum DWRITE_FLOW_DIRECTION { 39 TOP_TO_BOTTOM, 40 FORWARD, 41 BACKWARD = FORWARD, 42 LEFT_TO_RIGHT = FORWARD, 43 RIGHT_TO_LEFT = BACKWARD, 44 } 45 46 public enum DWRITE_FONT_FACE_TYPE : int { 47 CFF, 48 RAW_CFF, 49 TRUETYPE, 50 TRUETYPE_COLLECTION, 51 TYPE1, 52 VECTOR, 53 BITMAP, 54 UNKNOWN, 55 } 56 57 public enum DWRITE_FONT_FEATURE_TAG : int { 58 DEFAULT = 0x746c6664, 59 VERTICAL_WRITING = 0x74726576, 60 VERTICAL_ALTERNATES_AND_ROTATION = 0x32747276, 61 ALTERNATIVE_FRACTIONS = 0x63726661, 62 PETITE_CAPITALS_FROM_CAPITALS = 0x63703263, 63 SMALL_CAPITALS_FROM_CAPITALS = 0x63733263, 64 CONTEXTUAL_ALTERNATES = 0x746c6163, 65 CASE_SENSITIVE_FORMS = 0x65736163, 66 GLYPH_COMPOSITION_DECOMPOSITION = 0x706d6363, 67 CONTEXTUAL_LIGATURES = 0x67696c63, 68 CAPITAL_SPACING = 0x70737063, 69 CONTEXTUAL_SWASH = 0x68777363, 70 CURSIVE_POSITIONING = 0x73727563, 71 DISCRETIONARY_LIGATURES = 0x67696c64, 72 EXPERT_FORMS = 0x74707865, 73 FRACTIONS = 0x63617266, 74 FULL_WIDTH = 0x64697766, 75 HALF_FORMS = 0x666c6168, 76 HALANT_FORMS = 0x6e6c6168, 77 ALTERNATE_HALF_WIDTH = 0x746c6168, 78 HISTORICAL_FORMS = 0x74736968, 79 HORIZONTAL_KANA_ALTERNATES = 0x616e6b68, 80 HISTORICAL_LIGATURES = 0x67696c68, 81 HALF_WIDTH = 0x64697768, 82 HOJO_KANJI_FORMS = 0x6f6a6f68, 83 JIS04_FORMS = 0x3430706a, 84 JIS78_FORMS = 0x3837706a, 85 JIS83_FORMS = 0x3338706a, 86 JIS90_FORMS = 0x3039706a, 87 KERNING = 0x6e72656b, 88 STANDARD_LIGATURES = 0x6167696c, 89 LINING_FIGURES = 0x6d756e6c, 90 LOCALIZED_FORMS = 0x6c636f6c, 91 MARK_POSITIONING = 0x6b72616d, 92 MATHEMATICAL_GREEK = 0x6b72676d, 93 MARK_TO_MARK_POSITIONING = 0x6b6d6b6d, 94 ALTERNATE_ANNOTATION_FORMS = 0x746c616e, 95 NLC_KANJI_FORMS = 0x6b636c6e, 96 OLD_STYLE_FIGURES = 0x6d756e6f, 97 ORDINALS = 0x6e64726f, 98 PROPORTIONAL_ALTERNATE_WIDTH = 0x746c6170, 99 PETITE_CAPITALS = 0x70616370, 100 PROPORTIONAL_FIGURES = 0x6d756e70, 101 PROPORTIONAL_WIDTHS = 0x64697770, 102 QUARTER_WIDTHS = 0x64697771, 103 REQUIRED_LIGATURES = 0x67696c72, 104 RUBY_NOTATION_FORMS = 0x79627572, 105 STYLISTIC_ALTERNATES = 0x746c6173, 106 SCIENTIFIC_INFERIORS = 0x666e6973, 107 SMALL_CAPITALS = 0x70636d73, 108 SIMPLIFIED_FORMS = 0x6c706d73, 109 STYLISTIC_SET_1 = 0x31307373, 110 STYLISTIC_SET_2 = 0x32307373, 111 STYLISTIC_SET_3 = 0x33307373, 112 STYLISTIC_SET_4 = 0x34307373, 113 STYLISTIC_SET_5 = 0x35307373, 114 STYLISTIC_SET_6 = 0x36307373, 115 STYLISTIC_SET_7 = 0x37307373, 116 STYLISTIC_SET_8 = 0x38307373, 117 STYLISTIC_SET_9 = 0x39307373, 118 STYLISTIC_SET_10 = 0x30317373, 119 STYLISTIC_SET_11 = 0x31317373, 120 STYLISTIC_SET_12 = 0x32317373, 121 STYLISTIC_SET_13 = 0x33317373, 122 STYLISTIC_SET_14 = 0x34317373, 123 STYLISTIC_SET_15 = 0x35317373, 124 STYLISTIC_SET_16 = 0x36317373, 125 STYLISTIC_SET_17 = 0x37317373, 126 STYLISTIC_SET_18 = 0x38317373, 127 STYLISTIC_SET_19 = 0x39317373, 128 STYLISTIC_SET_20 = 0x30327373, 129 SUBSCRIPT = 0x73627573, 130 SUPERSCRIPT = 0x73707573, 131 SWASH = 0x68737773, 132 TITLING = 0x6c746974, 133 TRADITIONAL_NAME_FORMS = 0x6d616e74, 134 TABULAR_FIGURES = 0x6d756e74, 135 TRADITIONAL_FORMS = 0x64617274, 136 THIRD_WIDTHS = 0x64697774, 137 UNICASE = 0x63696e75, 138 SLASHED_ZERO = 0x6f72657a, 139 } 140 141 public enum DWRITE_FONT_FILE_TYPE : int { 142 UNKNOWN, 143 CFF, 144 TRUETYPE, 145 TRUETYPE_COLLECTION, 146 TYPE1_PFM, 147 TYPE1_PFB, 148 VECTOR, 149 BITMAP, 150 } 151 152 public enum DWRITE_FONT_SIMULATIONS : int { 153 NONE = 0x0000, 154 BOLD = 0x0001, 155 OBLIQUE = 0x0002, 156 } 157 158 public enum DWRITE_FONT_STRETCH : int { 159 UNDEFINED = 0, 160 ULTRA_CONDENSED = 1, 161 EXTRA_CONDENSED = 2, 162 CONDENSED = 3, 163 SEMI_CONDENSED = 4, 164 NORMAL = 5, 165 MEDIUM = 5, 166 SEMI_EXPANDED = 6, 167 EXPANDED = 7, 168 EXTRA_EXPANDED = 8, 169 ULTRA_EXPANDED = 9, 170 } 171 172 public enum DWRITE_FONT_STYLE : int { 173 NORMAL, 174 OBLIQUE, 175 ITALIC, 176 } 177 178 public enum DWRITE_FONT_WEIGHT : int { 179 THIN = 100, 180 EXTRA_LIGHT = 200, 181 ULTRA_LIGHT = 200, 182 LIGHT = 300, 183 SEMI_LIGHT = 350, 184 NORMAL = 400, 185 REGULAR = 400, 186 MEDIUM = 500, 187 DEMI_BOLD = 600, 188 SEMI_BOLD = 600, 189 BOLD = 700, 190 EXTRA_BOLD = 800, 191 ULTRA_BOLD = 800, 192 BLACK = 900, 193 HEAVY = 900, 194 EXTRA_BLACK = 950, 195 ULTRA_BLACK = 950, 196 } 197 198 public enum DWRITE_INFORMATIONAL_STRING_ID : int { 199 NONE, 200 COPYRIGHT_NOTICE, 201 VERSION_STRINGS, 202 TRADEMARK, 203 MANUFACTURER, 204 DESIGNER, 205 DESIGNER_URL, 206 DESCRIPTION, 207 FONT_VENDOR_URL, 208 FULL_NAME, 209 LICENSE_DESCRIPTION, 210 LICENSE_INFO_URL, 211 WIN32_FAMILY_NAMES, 212 WIN32_SUBFAMILY_NAMES, 213 PREFERRED_FAMILY_NAMES, 214 PREFERRED_SUBFAMILY_NAMES, 215 SAMPLE_TEXT, 216 POSTSCRIPT_NAME, 217 POSTSCRIPT_CID_NAME, 218 } 219 220 public enum DWRITE_LINE_SPACING_METHOD : int { 221 DEFAULT, 222 UNIFORM, 223 } 224 225 public enum DWRITE_MEASURING_MODE : int { 226 NATURAL, 227 GDI_CLASSIC, 228 GDI_NATURAL, 229 } 230 231 public enum DWRITE_NUMBER_SUBSTITUTION_METHOD { 232 FROM_CULTURE, 233 CONTEXTUAL, 234 NONE, 235 NATIONAL, 236 TRADITIONAL, 237 } 238 239 public enum DWRITE_PARAGRAPH_ALIGNMENT : int { 240 NEAR, 241 FAR, 242 CENTER, 243 } 244 245 public enum DWRITE_PIXEL_GEOMETRY : int { 246 FLAT, 247 RGB, 248 BGR, 249 } 250 251 public enum DWRITE_READING_DIRECTION : int { 252 LEFT_TO_RIGHT, 253 RIGHT_TO_LEFT, 254 TOP_TO_BOTTOM, 255 BOTTOM_TO_TOP, 256 } 257 258 public enum DWRITE_RENDERING_MODE : int { 259 DEFAULT, 260 ALIASED, 261 GDI_CLASSIC, 262 GDI_NATURAL, 263 NATURAL, 264 NATURAL_SYMMETRIC, 265 CLEARTYPE_GDI_CLASSIC = GDI_CLASSIC, 266 CLEARTYPE_GDI_NATURAL = GDI_NATURAL, 267 CLEARTYPE_NATURAL = NATURAL, 268 CLEARTYPE_NATURAL_SYMMETRIC = NATURAL_SYMMETRIC, 269 OUTLINE, 270 } 271 272 public enum DWRITE_SCRIPT_SHAPES : int { 273 DEFAULT = 0, 274 NO_VISUAL = 1, 275 } 276 277 public enum DWRITE_TEXT_ALIGNMENT : int { 278 LEADING, 279 TRAILING, 280 CENTER, 281 JUSTIFIED, 282 } 283 284 public enum DWRITE_TEXTURE_TYPE : int { 285 DWRITE_TEXTURE_ALIASED_1x1, 286 DWRITE_TEXTURE_CLEARTYPE_3x1, 287 } 288 289 public enum DWRITE_TRIMMING_GRANULARITY : int { 290 NONE, 291 CHARACTER, 292 WORD, 293 } 294 295 public enum DWRITE_WORD_WRAPPING : int { 296 WRAP, 297 NO_WRAP, 298 EMERGENCY_BREAK, 299 WHOLE_WORD, 300 CHARACTER, 301 } 302 303 /// 304 /// Structures 305 /// 306 307 public struct DWRITE_CLUSTER_METRICS { 308 float width; 309 ushort length; 310 mixin(bitfields!( 311 ushort, "canWrapLineAfter", 1, 312 ushort, "isWhitespace", 1, 313 ushort, "isNewline", 1, 314 ushort, "isSoftHyphen", 1, 315 ushort, "isRightToLeft", 1, 316 ushort, "padding", 11)); 317 } 318 319 public struct DWRITE_FONT_FEATURE { 320 DWRITE_FONT_FEATURE_TAG nameTag; 321 uint parameter; 322 } 323 324 public struct DWRITE_FONT_METRICS { 325 ushort designUnitsPerEm; 326 ushort ascent; 327 ushort descent; 328 short lineGap; 329 ushort capHeight; 330 ushort xHeight; 331 short underlinePosition; 332 ushort underlineThickness; 333 short strikethroughPosition; 334 ushort strikethroughThickness; 335 } 336 337 public struct DWRITE_GLYPH_METRICS { 338 int leftSideBearing; 339 uint advanceWidth; 340 int rightSideBearing; 341 int topSideBearing; 342 uint advanceHeight; 343 int bottomSideBearing; 344 int verticalOriginY; 345 } 346 347 public struct DWRITE_GLYPH_OFFSET { 348 float advanceOffset; 349 float ascenderOffset; 350 } 351 352 public struct DWRITE_GLYPH_RUN { 353 IDWriteFontFace fontFace; 354 float fontEmSize; 355 uint glyphCount; 356 const ushort *glyphIndices; 357 const float *glyphAdvances; 358 const DWRITE_GLYPH_OFFSET *glyphOffsets; 359 bool isSideways; 360 uint bidiLevel; 361 } 362 363 public struct DWRITE_GLYPH_RUN_DESCRIPTION { 364 const wchar *localeName; 365 const wchar *string; 366 uint stringLength; 367 const short *clusterMap; 368 uint textPosition; 369 } 370 371 public struct DWRITE_HIT_TEST_METRICS { 372 uint textPosition; 373 uint length; 374 float left; 375 float top; 376 float width; 377 float height; 378 uint bidiLevel; 379 bool isText; 380 bool isTrimmed; 381 } 382 383 public struct DWRITE_INLINE_OBJECT_METRICS { 384 float width; 385 float height; 386 float baseline; 387 bool supportsSideways; 388 } 389 390 public struct DWRITE_LINE_BREAKPOINT { 391 mixin(bitfields!( 392 ubyte, "breakConditionBefore", 2, 393 ubyte, "breakConditionAfter", 2, 394 ubyte, "isWhitespace", 1, 395 ubyte, "isSoftHyphen", 1, 396 ubyte, "padding", 2)); 397 } 398 399 public struct DWRITE_LINE_METRICS { 400 uint length; 401 uint trailingWhitespaceLength; 402 uint newlineLength; 403 float height; 404 float baseline; 405 bool isTrimmed; 406 } 407 408 public struct DWRITE_MATRIX { 409 float m11; 410 float m12; 411 float m21; 412 float m22; 413 float dx; 414 float dy; 415 } 416 417 public struct DWRITE_OVERHANG_METRICS { 418 float left; 419 float top; 420 float right; 421 float bottom; 422 } 423 424 public struct DWRITE_SCRIPT_ANALYSIS { 425 ushort script; 426 DWRITE_SCRIPT_SHAPES shapes; 427 } 428 429 public struct DWRITE_SHAPING_GLYPH_PROPERTIES { 430 mixin(bitfields!( 431 ushort, "justification", 4, 432 ushort, "isClusterStart", 1, 433 ushort, "isDiacritic", 1, 434 ushort, "isZeroWidthSpace", 1, 435 ushort, "reserved", 9)); 436 } 437 438 public struct DWRITE_SHAPING_TEXT_PROPERTIES { 439 mixin(bitfields!( 440 ushort, "isShapedAlone", 1, 441 ushort, "reserved", 15)); 442 } 443 444 public struct DWRITE_STRIKETHROUGH { 445 float width; 446 float thickness; 447 float offset; 448 DWRITE_READING_DIRECTION readingDirection; 449 DWRITE_FLOW_DIRECTION flowDirection; 450 const wchar *localeName; 451 DWRITE_MEASURING_MODE measuringMode; 452 } 453 454 public struct DWRITE_TEXT_METRICS { 455 float left; 456 float top; 457 float width; 458 float widthIncludingTrailingWhitespace; 459 float height; 460 float layoutWidth; 461 float layoutHeight; 462 uint maxBidiReorderingDepth; 463 uint lineCount; 464 } 465 466 public struct DWRITE_TEXT_RANGE { 467 uint startPosition; 468 uint length; 469 } 470 471 public struct DWRITE_TRIMMING { 472 DWRITE_TRIMMING_GRANULARITY granularity; 473 uint delimiter; 474 uint delimiterCount; 475 } 476 477 public struct DWRITE_TYPOGRAPHIC_FEATURES { 478 DWRITE_FONT_FEATURE *features; 479 uint featureCount; 480 } 481 482 public struct DWRITE_UNDERLINE { 483 float width; 484 float thickness; 485 float offset; 486 float runHeight; 487 DWRITE_READING_DIRECTION readingDirection; 488 DWRITE_FLOW_DIRECTION flowDirection; 489 const wchar *localeName; 490 DWRITE_MEASURING_MODE measuringMode; 491 } 492 493 /// 494 /// Interfaces 495 /// 496 497 alias ID2D1SimplifiedGeometrySink IDWriteGeometrySink; 498 499 mixin(uuid!(IDWriteBitmapRenderTarget, "5e5a32a3-8dff-4773-9ff6-0696eab77267")); 500 public interface IDWriteBitmapRenderTarget : IUnknown 501 { 502 extern(Windows): 503 HRESULT DrawGlyphRun(float BaselineOriginX, float BaselineOriginY, DWRITE_MEASURING_MODE MeasuringMode, const DWRITE_GLYPH_RUN* GlyphRun, IDWriteRenderingParams RenderingParams, COLORREF TextColor, RECT* BlackBoxRect); 504 HRESULT GetCurrentTransform(DWRITE_MATRIX* Transform); 505 HDC GetMemoryDC(); 506 float GetPixelsPerDIP(); 507 HRESULT GetSize(SIZE* Size); 508 HRESULT Resize(uint Width, uint Height); 509 HRESULT SetCurrentTransform(const DWRITE_MATRIX* Transform); 510 HRESULT SetPixelsPerDIP(float PixelsPerDIP); 511 } 512 513 mixin(uuid!(IDWriteFont, "acd16696-8c14-4f5d-877e-fe3fc1d32737")); 514 public interface IDWriteFont : IUnknown 515 { 516 extern(Windows): 517 HRESULT CreateFontFace(IDWriteFontFace* FontFace); 518 HRESULT GetFaceNames(IDWriteLocalizedStrings* Names); 519 HRESULT GetFontFamily(IDWriteFontFamily* FontFamily); 520 HRESULT GetInformationalStrings(DWRITE_INFORMATIONAL_STRING_ID InformationalStringID, IDWriteLocalizedStrings* InformationalStrings, bool* Exists); 521 HRESULT GetMetrics(DWRITE_FONT_METRICS* FontMetrics); 522 DWRITE_FONT_SIMULATIONS GetSimulations(); 523 DWRITE_FONT_STRETCH GetStretch(); 524 DWRITE_FONT_STYLE GetStyle(); 525 DWRITE_FONT_WEIGHT GetWeight(); 526 HRESULT HasCharacter(uint UnicodeValue, bool* Exists); 527 bool IsSymbolFont(); 528 } 529 530 mixin(uuid!(IDWriteFontCollection, "a84cee02-3eea-4eee-a827-87c1a02a0fcc")); 531 public interface IDWriteFontCollection : IUnknown 532 { 533 extern(Windows): 534 HRESULT FindFamilyName(const wchar* FamilyName, uint* Index, bool* Exists); 535 HRESULT GetFontFamily(uint Index, IDWriteFontFamily* FontFamily); 536 uint GetFontFamilyCount(); 537 HRESULT GetFontFromFontFace(IDWriteFontFace* FontFace, IDWriteFont* Font); 538 } 539 540 mixin(uuid!(IDWriteFontCollectionLoader, "cca920e4-52f0-492b-bfa8-29c72ee0a468")); 541 public interface IDWriteFontCollectionLoader : IUnknown 542 { 543 extern(Windows): 544 HRESULT CreateEnumeratorFromKey(IDWriteFactory Factory, const void* CollectionKey, uint CollectionKeySize, IDWriteFontFileEnumerator* FontFileEnumerator); 545 } 546 547 mixin(uuid!(IDWriteFontFace, "5f49804d-7024-4d43-bfa9-d25984f53849")); 548 public interface IDWriteFontFace : IUnknown 549 { 550 extern(Windows): 551 HRESULT GetDesignGlyphMetrics(const(uint*) Indices, uint Count, DWRITE_GLYPH_METRICS* Metrics, bool IsSideways); 552 HRESULT GetFiles(uint* NumberOfFiles, IDWriteFontFile* Files = null); 553 HRESULT GetGdiCompatibleGlyphMetrics(float EMSize, float PixelsPerDIP, const(DWRITE_MATRIX*) Transform, bool UseGDINatural, const(ushort*) Indices, uint Count, DWRITE_GLYPH_METRICS* Metrics, bool IsSideways); 554 HRESULT GetGdiCompatibleMetrics(float EMSize, float PixelsPerDIP, const(DWRITE_MATRIX*) Transform, DWRITE_FONT_METRICS* FontFaceMetrics); 555 ushort GetGlyphCount(); 556 HRESULT GetGlyphRunOutline(float EMSize, ushort* Indices, float* Advances, DWRITE_GLYPH_OFFSET* Offsets, uint Count, bool IsSideways, bool RightToLeft, IDWriteGeometrySink GeometrySink); 557 uint GetIndex(); 558 void GetMetrics(DWRITE_FONT_METRICS* FontFaceMetrics); 559 HRESULT GetRecommendedRenderingMode(float EMSize, float PixelsPerDIP, DWRITE_MEASURING_MODE MeasuringMode, IDWriteRenderingParams RenderingParams, DWRITE_RENDERING_MODE* RenderingMode); 560 DWRITE_FONT_SIMULATIONS GetSimulations(); 561 DWRITE_FONT_FACE_TYPE GetType(); 562 bool IsSymbolFont(); 563 void ReleaseFontTable(void* TableContext); 564 } 565 566 mixin(uuid!(IDWriteFontFamily, "da20d8ef-812a-4c43-9802-62ec4abd7add")); 567 public interface IDWriteFontFamily : IUnknown 568 { 569 extern(Windows): 570 HRESULT GetFamilyNames(IDWriteLocalizedStrings* Names); 571 HRESULT GetFirstMatchingFont(DWRITE_FONT_WEIGHT Weight, DWRITE_FONT_STRETCH Stretch, DWRITE_FONT_STYLE Style, IDWriteFont* MatchingFont); 572 HRESULT GetMatchingFonts(DWRITE_FONT_WEIGHT Weight, DWRITE_FONT_STRETCH Stretch, DWRITE_FONT_STYLE Style, IDWriteFontList* MatchingFont); 573 } 574 575 mixin(uuid!(IDWriteFontFile, "739d886a-cef5-47dc-8769-1a8b41bebbb0")); 576 public interface IDWriteFontFile : IUnknown 577 { 578 extern(Windows): 579 HRESULT Analyse(bool* IsSupportedFontType, DWRITE_FONT_FILE_TYPE FileType, DWRITE_FONT_FACE_TYPE FaceType, uint NumberOfFaces); 580 HRESULT GetLoader(IDWriteFontFileLoader* Loader); 581 HRESULT GetReferenceKey(const(void**) Key, uint KeySize); 582 } 583 584 mixin(uuid!(IDWriteFontFileEnumerator, "72755049-5ff7-435d-8348-4be97cfa6c7c")); 585 public interface IDWriteFontFileEnumerator : IUnknown 586 { 587 extern(Windows): 588 HRESULT GetCurrentFontFile(IDWriteFontFile* FontFile); 589 HRESULT MoveNext(bool* HasCurrentFile); 590 } 591 592 mixin(uuid!(IDWriteFontFileLoader, "727cad4e-d6af-4c9e-8a08-d695b11caa49")); 593 public interface IDWriteFontFileLoader : IUnknown 594 { 595 extern(Windows): 596 HRESULT CreateStreamFromKey(const(void*) Key, uint KeySize, IDWriteFontFileStream* Stream); 597 } 598 599 mixin(uuid!(IDWriteFontFileStream, "6d4865fe-0ab8-4d91-8f62-5dd6be34a3e0")); 600 public interface IDWriteFontFileStream : IUnknown 601 { 602 extern(Windows): 603 HRESULT GetFileSize(ulong* Size); 604 HRESULT GetLastWriteTime(ulong* WriteTime); 605 HRESULT ReadFileFragment(const(void**) Start, ulong Offset, ulong Size, void** Context); 606 HRESULT ReleaseFileFragment(void* Context); 607 } 608 609 mixin(uuid!(IDWriteFontList, "1a0d8438-1d97-4ec1-aef9-a2fb86ed6acb")); 610 public interface IDWriteFontList : IUnknown 611 { 612 extern(Windows): 613 HRESULT GetFont(uint Index, IDWriteFont* Font); 614 HRESULT GetFontCollection(IDWriteFontCollection* FontCollection); 615 uint GetFontCount(); 616 } 617 618 mixin(uuid!(IDWriteGdiInterop, "1edd9491-9853-4299-898f-6432983b6f3a")); 619 public interface IDWriteGdiInterop : IUnknown 620 { 621 extern(Windows): 622 HRESULT ConvertFontToLOGFONT(IDWriteFont Font, LOGFONTW* LogFont, bool* IsSystemFont); 623 HRESULT ConvertFontFaceToLOGFONT(IDWriteFontFace Font, LOGFONTW* LogFont); 624 HRESULT CreateBitmapRenderTarget(HDC HDC, uint Width, uint Height, IDWriteBitmapRenderTarget* RenderTarget); 625 HRESULT CreateFontFaceFromHdc(HDC HDC, IDWriteFontFace * FontFace); 626 HRESULT CreateFontFromLOGFONT(const LOGFONTW* LogFont, IDWriteFont* Font); 627 } 628 629 mixin(uuid!(IDWriteGlyphRunAnalysis, "7d97dbf7-e085-42d4-81e3-6a883bded118")); 630 public interface IDWriteGlyphRunAnalysis : IUnknown 631 { 632 extern(Windows): 633 HRESULT CreateAlphaTexture(DWRITE_TEXTURE_TYPE TextureType, const RECT * TextureBounds, ubyte* AlphaValues, uint BufferSize); 634 HRESULT GetAlphaBlendParams(IDWriteRenderingParams RenderingParams, float* BlendGamma, float* BlendEnhancedContrast, float* BlendClearTypeLevel); 635 HRESULT GetAlphaTextureBounds(DWRITE_TEXTURE_TYPE TextureType, RECT* TextureBounds); 636 } 637 638 mixin(uuid!(IDWriteInlineObject, "8339FDE3-106F-47ab-8373-1C6295EB10B3")); 639 public interface IDWriteInlineObject : IUnknown 640 { 641 extern(Windows): 642 HRESULT Draw(void* ClientDrawingContext, IDWriteTextRenderer* Renderer, float OriginX, float OriginY, bool IsSideways, bool IsRightToLeft, IUnknown ClientDrawingEffect); 643 HRESULT GetBreakConditions(DWRITE_BREAK_CONDITION* BreakConditionBefore, DWRITE_BREAK_CONDITION* BreakConditionAfter); 644 HRESULT GetMetrics(DWRITE_INLINE_OBJECT_METRICS* Metrics); 645 HRESULT GetOverhangMetrics(DWRITE_OVERHANG_METRICS* Overhangs); 646 } 647 648 mixin(uuid!(IDWriteLocalFontFileLoader, "b2d9f3ec-c9fe-4a11-a2ec-d86208f7c0a2")); 649 public interface IDWriteLocalFontFileLoader : IUnknown 650 { 651 extern(Windows): 652 HRESULT GetFilePathFromKey(const void *FontFileReferenceKey, uint FontFileReferenceKeySize, wchar *FilePath,uint FilePathSize); 653 HRESULT GetFilePathLengthFromKey(const void *FontFileReferenceKey, uint FontFileReferenceKeySize, uint *FilePathLength); 654 HRESULT GetLastWriteTimeFromKey(const void *FontFileReferenceKey, uint FontFileReferenceKeySize, FILETIME *LastWriteTime); 655 } 656 657 mixin(uuid!(IDWriteLocalizedStrings, "08256209-099a-4b34-b86d-c22b110e7771")); 658 public interface IDWriteLocalizedStrings : IUnknown 659 { 660 extern(Windows): 661 HRESULT FindLocaleName(const wchar* LocaleName, uint* Index, bool* Exists); 662 uint GetCount(); 663 HRESULT GetLocaleName(uint Index, wchar* LocaleName, uint Size); 664 HRESULT GetLocaleNameSize(uint Index, uint* Length); 665 HRESULT GetString(uint Index, wchar* StringBuffer, uint Size); 666 HRESULT GetStringLength(uint Index, uint* Length); 667 } 668 669 mixin(uuid!(IDWriteNumberSubstitution, "14885CC9-BAB0-4f90-B6ED-5C366A2CD03D")); 670 public interface IDWriteNumberSubstitution : IUnknown 671 { 672 extern(Windows): 673 674 } 675 676 mixin(uuid!(IDWritePixelSnapping, "eaf3a2da-ecf4-4d24-b644-b34f6842024b")); 677 public interface IDWritePixelSnapping : IUnknown 678 { 679 extern(Windows): 680 HRESULT GetCurrentTransform(void* ClientDrawingContext, DWRITE_MATRIX* Transform); 681 HRESULT GetPixelsPerDip(void* ClientDrawingContext, float* PixelsPerDip); 682 HRESULT IsPixelSnappingEnabled(void* ClientDrawingContext, bool* IsDisabled); 683 } 684 685 mixin(uuid!(IDWriteRenderingParams, "2f0da53a-2add-47cd-82ee-d9ec34688e75")); 686 public interface IDWriteRenderingParams : IUnknown 687 { 688 extern(Windows): 689 float GetClearTypeLevel(); 690 float GetEnhancedContrast(); 691 float GetGamma(); 692 DWRITE_PIXEL_GEOMETRY GetPixelGeometry(); 693 DWRITE_RENDERING_MODE GetRenderingMode(); 694 } 695 696 mixin(uuid!(IDWriteTextAnalysisSink, "5810cd44-0ca0-4701-b3fa-bec5182ae4f6")); 697 public interface IDWriteTextAnalysisSink : IUnknown 698 { 699 extern(Windows): 700 HRESULT SetBidiLevel(uint TextPosition, uint TextLength, ubyte ExplicitLevel, ubyte ResolvedLevel); 701 HRESULT SetLineBreakpoints(uint TextPosition, uint TextLength, DWRITE_LINE_BREAKPOINT *LineBreakpoints); 702 HRESULT SetNumberSubstitution(uint TextPosition, uint TextLength, IDWriteNumberSubstitution NumberSubstitution); 703 HRESULT SetScriptAnalysis(uint TextPosition, uint TextLength, const DWRITE_SCRIPT_ANALYSIS *ScriptAnalysis); 704 } 705 706 mixin(uuid!(IDWriteTextAnalysisSource, "688e1a58-5094-47c8-adc8-fbcea60ae92b")); 707 public interface IDWriteTextAnalysisSource : IUnknown 708 { 709 extern(Windows): 710 HRESULT GetLocaleName(uint TextPosition, uint *TextLength, const wchar **LocaleName); 711 HRESULT GetNumberSubstitution(uint TextPosition, uint *TextLength, IDWriteNumberSubstitution *NumberSubstitution); 712 DWRITE_READING_DIRECTION GetParagraphReadingDirection(); 713 HRESULT GetTextAtPosition(uint TextPosition, const wchar **TextString, uint *TextLength); 714 HRESULT GetTextBeforePosition(uint TextPosition, const wchar **TextString, uint *TextLength); 715 } 716 717 mixin(uuid!(IDWriteTextAnalyzer, "b7e6163e-7f46-43b4-84b3-e4e6249c365d")); 718 public interface IDWriteTextAnalyzer : IUnknown 719 { 720 extern(Windows): 721 HRESULT AnalyzeBidi(IDWriteTextAnalysisSource AnalysisSource, uint TextPosition, uint TextLength, IDWriteTextAnalysisSink AnalysisSink); 722 HRESULT AnalyzeLineBreakpoints(IDWriteTextAnalysisSource AnalysisSource, uint TextPosition, uint TextLength, IDWriteTextAnalysisSink AnalysisSink); 723 HRESULT AnalyzeNumberSubstitution(IDWriteTextAnalysisSource AnalysisSource, uint TextPosition, uint TextLength, IDWriteTextAnalysisSink AnalysisSink); 724 HRESULT AnalyzeScript(IDWriteTextAnalysisSource AnalysisSource, uint TextPosition, uint TextLength, IDWriteTextAnalysisSink AnalysisSink); 725 HRESULT GetGdiCompatibleGlyphPlacements(const wchar* TextString, const ushort* ClusterMap, DWRITE_SHAPING_TEXT_PROPERTIES *TextProps, uint TextLength, const ushort * GlyphIndices, const DWRITE_SHAPING_GLYPH_PROPERTIES * GlyphProps, uint GlyphCount, IDWriteFontFace FontFace, float FontEmSize, float PixelsPerDip, const DWRITE_MATRIX *Transform, bool UseGdiNatural, bool IsSideways, bool IsRightToLeft, const DWRITE_SCRIPT_ANALYSIS *ScriptAnalysis, const wchar *LocaleName, const DWRITE_TYPOGRAPHIC_FEATURES **Features, const uint *FeatureRangeLengths, uint FeatureRanges, float * GlyphAdvances, DWRITE_GLYPH_OFFSET * GlyphOffsets); 726 HRESULT GetGlyphPlacements(const wchar* TextString, const ushort* ClusterMap, DWRITE_SHAPING_TEXT_PROPERTIES *TextProps, uint TextLength, const ushort * GlyphIndices, const DWRITE_SHAPING_GLYPH_PROPERTIES * GlyphProps, uint GlyphCount, IDWriteFontFace FontFace, float FontEmSize, bool IsSideways, bool IsRightToLeft, const DWRITE_SCRIPT_ANALYSIS *ScriptAnalysis, const wchar *LocaleName, const DWRITE_TYPOGRAPHIC_FEATURES **Features, const uint *FeatureRangeLengths, uint FeatureRanges, float *GlyphAdvances, DWRITE_GLYPH_OFFSET * GlyphOffsets); 727 HRESULT GetGlyphs(const wchar * TextString, uint TextLength, IDWriteFontFace FontFace, bool IsSideways, bool IsRightToLeft, const DWRITE_SCRIPT_ANALYSIS * ScriptAnalysis, const wchar * LocaleName, IDWriteNumberSubstitution NumberSubstitution, const DWRITE_TYPOGRAPHIC_FEATURES **Features, const uint *FeatureRangeLengths, uint FeatureRanges, uint MaxGlyphCount, ushort *ClusterMap, DWRITE_SHAPING_TEXT_PROPERTIES *TextProps, ushort *GlyphIndices, DWRITE_SHAPING_GLYPH_PROPERTIES *GlyphProps, uint *ActualGlyphCount); 728 } 729 730 mixin(uuid!(IDWriteTextFormat, "53737037-6d14-410b-9bfe-0b182bb70961")); 731 public interface IDWriteTextFormat : IUnknown 732 { 733 extern(Windows): 734 DWRITE_FLOW_DIRECTION GetFlowDirection(); 735 HRESULT GetFontCollection(IDWriteFontCollection *FontCollection); 736 HRESULT GetFontFamilyName(wchar *FontFamilyName, uint NameSize); 737 uint GetFontFamilyNameLength(); 738 float GetFontSize(); 739 DWRITE_FONT_STRETCH GetFontStretch(); 740 DWRITE_FONT_STYLE GetFontStyle(); 741 DWRITE_FONT_WEIGHT GetFontWeight(); 742 float GetIncrementalTabStop(); 743 HRESULT GetLineSpacing(DWRITE_LINE_SPACING_METHOD *LineSpacingMethod, float *LineSpacing, float *Baseline); 744 HRESULT GetLocaleName(wchar *LocaleName, uint NameSize); 745 uint GetLocaleNameLength(); 746 DWRITE_PARAGRAPH_ALIGNMENT GetParagraphAlignment(); 747 DWRITE_READING_DIRECTION GetReadingDirection(); 748 DWRITE_TEXT_ALIGNMENT GetTextAlignment(); 749 HRESULT GetTrimming(DWRITE_TRIMMING *TrimmingOptions, IDWriteInlineObject *TrimmingSign); 750 DWRITE_WORD_WRAPPING GetWordWrapping(); 751 HRESULT SetFlowDirection(DWRITE_FLOW_DIRECTION FlowDirection); 752 HRESULT SetIncrementalTabStop(float IncrementalTabStop); 753 HRESULT SetLineSpacing(DWRITE_LINE_SPACING_METHOD LineSpacingMethod, float LineSpacing, float Baseline); 754 HRESULT SetParagraphAlignment(DWRITE_PARAGRAPH_ALIGNMENT ParagraphAlignment); 755 HRESULT SetReadingDirection(DWRITE_READING_DIRECTION ReadingDirection); 756 HRESULT SetTextAlignment(DWRITE_TEXT_ALIGNMENT TextAlignment); 757 HRESULT SetTrimming(const DWRITE_TRIMMING *TrimmingOptions, IDWriteInlineObject TrimmingSign); 758 HRESULT SetWordWrapping(DWRITE_WORD_WRAPPING WordWrapping); 759 } 760 761 mixin(uuid!(IDWriteTextLayout, "53737037-6d14-410b-9bfe-0b182bb70961")); 762 public interface IDWriteTextLayout : IUnknown 763 { 764 extern(Windows): 765 HRESULT DetermineMinWidth(float *MinWidth); 766 HRESULT Draw(void *ClientDrawingContext, IDWriteTextRenderer Renderer, float OriginX, float OriginY); 767 HRESULT GetClusterMetrics(DWRITE_CLUSTER_METRICS * ClusterMetrics, uint MaxClusterCount, uint *ActualClusterCount); 768 HRESULT GetDrawingEffect(uint CurrentPosition, IUnknown *DrawingEffect, DWRITE_TEXT_RANGE * TextRange); 769 HRESULT GetFontCollection(uint CurrentPosition, IDWriteFontCollection *FontCollection, DWRITE_TEXT_RANGE *TextRange); 770 HRESULT GetFontFamilyName(uint CurrentPosition, wchar *FontFamilyName, uint NameSize, DWRITE_TEXT_RANGE *TextRange); 771 HRESULT GetFontFamilyNameLength(uint CurrentPosition, uint *NameLength, DWRITE_TEXT_RANGE *TextRange); 772 HRESULT GetFontSize(uint CurrentPosition, float *FontSize, DWRITE_TEXT_RANGE *TextRange); 773 HRESULT GetFontStretch(uint CurrentPosition, DWRITE_FONT_STRETCH *FontStretch, DWRITE_TEXT_RANGE *TextRange); 774 HRESULT GetFontStyle(uint CurrentPosition, DWRITE_FONT_STYLE *FontStyle, DWRITE_TEXT_RANGE *TextRange); 775 HRESULT GetFontWeight(uint CurrentPosition, DWRITE_FONT_WEIGHT *FontWeight, DWRITE_TEXT_RANGE *TextRange); 776 HRESULT GetInlineObject(uint CurrentPosition, IDWriteInlineObject *InlineObject, DWRITE_TEXT_RANGE *TextRange); 777 HRESULT GetLineMetrics(DWRITE_LINE_METRICS *LineMetrics, uint MaxLineCount, uint *ActualLineCount); 778 HRESULT GetLocaleName(uint CurrentPosition, wchar *LocaleName, uint NameSize, DWRITE_TEXT_RANGE *TextRange); 779 HRESULT GetLocaleNameLength(uint CurrentPosition,uint *NameLength, DWRITE_TEXT_RANGE *TextRange); 780 float GetMaxHeight(); 781 float GetMaxWidth(); 782 HRESULT GetMetrics(DWRITE_TEXT_METRICS *TextMetrics); 783 HRESULT GetOverhangMetrics(DWRITE_OVERHANG_METRICS *Overhangs); 784 HRESULT GetStrikethrough(uint CurrentPosition, bool *HasStrikethrough, DWRITE_TEXT_RANGE *TextRange); 785 HRESULT GetTypography(uint CurrentPosition, IDWriteTypography *Typography, DWRITE_TEXT_RANGE *TextRange); 786 HRESULT GetUnderline(uint CurrentPosition, bool *HasUnderline, DWRITE_TEXT_RANGE *TextRange); 787 HRESULT HitTestPoint(float PointX, float PointY, bool *IsTrailingHit, bool *IsInside, DWRITE_HIT_TEST_METRICS *HitTestMetrics); 788 HRESULT HitTestTextPosition(uint TextPosition, bool IsTrailingHit, float *PointX, float *PointY, DWRITE_HIT_TEST_METRICS *HitTestMetrics); 789 HRESULT HitTestTextRange(uint TextPosition, uint TextLength, float OriginX, float OriginY, DWRITE_HIT_TEST_METRICS *HitTestMetrics, uint MaxHitTestMetricsCount, uint *ActualHitTestMetricsCount); 790 HRESULT SetDrawingEffect(IUnknown DrawingEffect, DWRITE_TEXT_RANGE TextRange); 791 HRESULT SetFontCollection(IDWriteFontCollection FontCollection, DWRITE_TEXT_RANGE TextRange); 792 HRESULT SetFontFamilyName(const wchar *FontFamilyName, DWRITE_TEXT_RANGE TextRange); 793 HRESULT SetFontSize(float FontSize, DWRITE_TEXT_RANGE TextRange); 794 HRESULT SetFontStretch(DWRITE_FONT_STRETCH FontStretch, DWRITE_TEXT_RANGE TextRange); 795 HRESULT SetFontStyle(DWRITE_FONT_STYLE FontStyle, DWRITE_TEXT_RANGE TextRange); 796 HRESULT SetFontWeight(DWRITE_FONT_WEIGHT FontWeight, DWRITE_TEXT_RANGE TextRange); 797 HRESULT SetInlineObject(IDWriteInlineObject InlineObject, DWRITE_TEXT_RANGE TextRange); 798 HRESULT SetLocaleName(const wchar *LocaleName, DWRITE_TEXT_RANGE TextRange); 799 HRESULT SetMaxHeight(float MaxHeight); 800 HRESULT SetMaxWidth(float MaxWidth); 801 HRESULT SetStrikethrough(bool HasStrikethrough, DWRITE_TEXT_RANGE TextRange); 802 HRESULT SetTypography(IDWriteTypography Typography, DWRITE_TEXT_RANGE TextRange); 803 HRESULT SetUnderline(bool HasUnderline, DWRITE_TEXT_RANGE TextRange); 804 } 805 806 mixin(uuid!(IDWriteTextRenderer, "ef8a8135-5cc6-45fe-8825-c5a0724eb819")); 807 public interface IDWriteTextRenderer : IDWritePixelSnapping 808 { 809 extern(Windows): 810 HRESULT DrawGlyphRun(void *ClientDrawingContext, float BaselineOriginX, float BaselineOriginY,DWRITE_MEASURING_MODE MeasuringMode, const DWRITE_GLYPH_RUN *GlyphRun, const DWRITE_GLYPH_RUN_DESCRIPTION *GlyphRunDescription, IUnknown ClientDrawingEffect); 811 HRESULT DrawInlineObject(void *ClientDrawingContext, float OriginX, float OriginY, IDWriteInlineObject *InlineObject, bool IsSideways, bool IsRightToLeft, IUnknown *ClientDrawingEffect); 812 HRESULT DrawStrikethrough(void *ClientDrawingContext, float BaselineOriginX, float BaselineOriginY, const DWRITE_STRIKETHROUGH *Strikethrough, IUnknown *ClientDrawingEffect); 813 HRESULT DrawUnderline(void *ClientDrawingContext, float BaselineOriginX, float BaselineOriginY, const DWRITE_UNDERLINE *Underline, IUnknown *ClientDrawingEffect); 814 } 815 816 mixin(uuid!(IDWriteTypography, "55f1112b-1dc2-4b3c-9541-f46894ed85b6")); 817 public interface IDWriteTypography : IUnknown 818 { 819 extern(Windows): 820 HRESULT AddFontFeature(DWRITE_FONT_FEATURE FontFeature); 821 HRESULT GetFontFeature(uint FontFeatureIndex, DWRITE_FONT_FEATURE *FontFeature); 822 uint GetFontFeatureCount(); 823 } 824 825 mixin(uuid!(IDWriteFactory, "b859ee5a-d838-4b5b-a2e8-1adc7d93db48")); 826 public interface IDWriteFactory : IUnknown 827 { 828 extern(Windows): 829 HRESULT CreateCustomFontCollection(IDWriteFontCollectionLoader CollectionLoader, const void *CollectionKey, uint CollectionKeySize, IDWriteFontCollection *FontCollection); 830 HRESULT CreateCustomFontFileReference(const void *FontFileReferenceKey, uint FontFileReferenceKeySize, IDWriteFontFileLoader *FontFileLoader, IDWriteFontFile *FontFile); 831 HRESULT CreateCustomRenderingParams(float Gamma, float EnhancedContrast, float ClearTypeLevel, DWRITE_PIXEL_GEOMETRY PixelGeometry, DWRITE_RENDERING_MODE RenderingMode, IDWriteRenderingParams *RenderingParams); 832 HRESULT CreateEllipsisTrimmingSign(IDWriteTextFormat *TextFormat, IDWriteInlineObject *TrimmingSign); 833 HRESULT CreateFontFace(DWRITE_FONT_FACE_TYPE FontFaceType, uint NumberOfFiles, const IDWriteFontFile FontFiles, uint FaceIndex, DWRITE_FONT_SIMULATIONS FontFaceSimulationFlags, IDWriteFontFace *FontFace); 834 HRESULT CreateFontFileReference(const wchar *FilePath, const FILETIME *LastWriteTime, IDWriteFontFile *FontFile); 835 HRESULT CreateGdiCompatibleTextLayout(const wchar *String, uint StringLength, IDWriteTextFormat *TextFormat, float LayoutWidth, float LayoutHeight, float PixelsPerDip, const DWRITE_MATRIX *Transform, bool UseGdiNatural, IDWriteTextLayout *TextLayout); 836 HRESULT CreateGlyphRunAnalysis(const DWRITE_GLYPH_RUN *GlyphRun, float PixelsPerDip, const DWRITE_MATRIX * Transform, DWRITE_RENDERING_MODE RenderingMode, DWRITE_MEASURING_MODE MeasuringMode, float BaselineOriginX, float BaselineOriginY, IDWriteGlyphRunAnalysis *GlyphRunAnalysis); 837 HRESULT CreateMonitorRenderingParams(long Monitor, IDWriteRenderingParams *RenderingParams); 838 HRESULT CreateNumberSubstitution(DWRITE_NUMBER_SUBSTITUTION_METHOD SubstitutionMethod, const wchar *LocaleName, bool IgnoreUserOverride, IDWriteNumberSubstitution *NumberSubstitution); 839 HRESULT CreateRenderingParams(IDWriteRenderingParams *RenderingParams); 840 HRESULT CreateTextAnalyzer(IDWriteTextAnalyzer *TextAnalyzer); 841 HRESULT CreateTextFormat(const wchar *FontFamilyName, IDWriteFontCollection FontCollection, DWRITE_FONT_WEIGHT FontWeight, DWRITE_FONT_STYLE FontStyle, DWRITE_FONT_STRETCH FontStretch, float FontSize, const wchar *LocaleName, IDWriteTextFormat *TextFormat); 842 HRESULT CreateTextLayout(const wchar *String, uint StringLength, IDWriteTextFormat TextFormat, float MaxWidth, float MaxHeight, IDWriteTextLayout *TextLayout); 843 HRESULT CreateTypography(IDWriteTypography *Typography); 844 HRESULT GetGdiInterop(IDWriteGdiInterop *GDIInterop); 845 HRESULT GetSystemFontCollection(IDWriteFontCollection *FontCollection, bool CheckForUpdates); 846 HRESULT RegisterFontCollectionLoader(IDWriteFontCollectionLoader FontCollectionLoader); 847 HRESULT RegisterFontFileLoader(IDWriteFontFileLoader FontFileLoader); 848 HRESULT UnregisterFontCollectionLoader(IDWriteFontCollectionLoader FontCollectionLoader); 849 HRESULT UnregisterFontFileLoader(IDWriteFontFileLoader FontFileLoader); 850 }