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