Details | Last modification | View Log | RSS feed
| Rev | Author | Line No. | Line |
|---|---|---|---|
| 1 | pmbaty | 1 | //+-------------------------------------------------------------------------- |
| 2 | // |
||
| 3 | // Copyright (c) Microsoft Corporation. All rights reserved. |
||
| 4 | // |
||
| 5 | // Abstract: |
||
| 6 | // DirectX Typography Services public API definitions. |
||
| 7 | // |
||
| 8 | //---------------------------------------------------------------------------- |
||
| 9 | |||
| 10 | #ifndef DWRITE_H_INCLUDED |
||
| 11 | #define DWRITE_H_INCLUDED |
||
| 12 | |||
| 13 | #if _MSC_VER > 1000 |
||
| 14 | #pragma once |
||
| 15 | #endif |
||
| 16 | |||
| 17 | #ifndef DWRITE_NO_WINDOWS_H |
||
| 18 | |||
| 19 | #include <specstrings.h> |
||
| 20 | #include <unknwn.h> |
||
| 21 | |||
| 22 | #endif // DWRITE_NO_WINDOWS_H |
||
| 23 | |||
| 24 | #include <dcommon.h> |
||
| 25 | |||
| 26 | #ifndef DWRITE_DECLARE_INTERFACE |
||
| 27 | #define DWRITE_DECLARE_INTERFACE(iid) DECLSPEC_UUID(iid) DECLSPEC_NOVTABLE |
||
| 28 | #endif |
||
| 29 | |||
| 30 | #ifndef DWRITE_EXPORT |
||
| 31 | #define DWRITE_EXPORT __declspec(dllimport) WINAPI |
||
| 32 | #endif |
||
| 33 | |||
| 34 | /// <summary> |
||
| 35 | /// The type of a font represented by a single font file. |
||
| 36 | /// Font formats that consist of multiple files, e.g. Type 1 .PFM and .PFB, have |
||
| 37 | /// separate enum values for each of the file type. |
||
| 38 | /// </summary> |
||
| 39 | enum DWRITE_FONT_FILE_TYPE |
||
| 40 | { |
||
| 41 | /// <summary> |
||
| 42 | /// Font type is not recognized by the DirectWrite font system. |
||
| 43 | /// </summary> |
||
| 44 | DWRITE_FONT_FILE_TYPE_UNKNOWN, |
||
| 45 | |||
| 46 | /// <summary> |
||
| 47 | /// OpenType font with CFF outlines. |
||
| 48 | /// </summary> |
||
| 49 | DWRITE_FONT_FILE_TYPE_CFF, |
||
| 50 | |||
| 51 | /// <summary> |
||
| 52 | /// OpenType font with TrueType outlines. |
||
| 53 | /// </summary> |
||
| 54 | DWRITE_FONT_FILE_TYPE_TRUETYPE, |
||
| 55 | |||
| 56 | /// <summary> |
||
| 57 | /// OpenType font that contains a TrueType collection. |
||
| 58 | /// </summary> |
||
| 59 | DWRITE_FONT_FILE_TYPE_TRUETYPE_COLLECTION, |
||
| 60 | |||
| 61 | /// <summary> |
||
| 62 | /// Type 1 PFM font. |
||
| 63 | /// </summary> |
||
| 64 | DWRITE_FONT_FILE_TYPE_TYPE1_PFM, |
||
| 65 | |||
| 66 | /// <summary> |
||
| 67 | /// Type 1 PFB font. |
||
| 68 | /// </summary> |
||
| 69 | DWRITE_FONT_FILE_TYPE_TYPE1_PFB, |
||
| 70 | |||
| 71 | /// <summary> |
||
| 72 | /// Vector .FON font. |
||
| 73 | /// </summary> |
||
| 74 | DWRITE_FONT_FILE_TYPE_VECTOR, |
||
| 75 | |||
| 76 | /// <summary> |
||
| 77 | /// Bitmap .FON font. |
||
| 78 | /// </summary> |
||
| 79 | DWRITE_FONT_FILE_TYPE_BITMAP |
||
| 80 | }; |
||
| 81 | |||
| 82 | /// <summary> |
||
| 83 | /// The file format of a complete font face. |
||
| 84 | /// Font formats that consist of multiple files, e.g. Type 1 .PFM and .PFB, have |
||
| 85 | /// a single enum entry. |
||
| 86 | /// </summary> |
||
| 87 | enum DWRITE_FONT_FACE_TYPE |
||
| 88 | { |
||
| 89 | /// <summary> |
||
| 90 | /// OpenType font face with CFF outlines. |
||
| 91 | /// </summary> |
||
| 92 | DWRITE_FONT_FACE_TYPE_CFF, |
||
| 93 | |||
| 94 | /// <summary> |
||
| 95 | /// OpenType font face with TrueType outlines. |
||
| 96 | /// </summary> |
||
| 97 | DWRITE_FONT_FACE_TYPE_TRUETYPE, |
||
| 98 | |||
| 99 | /// <summary> |
||
| 100 | /// OpenType font face that is a part of a TrueType collection. |
||
| 101 | /// </summary> |
||
| 102 | DWRITE_FONT_FACE_TYPE_TRUETYPE_COLLECTION, |
||
| 103 | |||
| 104 | /// <summary> |
||
| 105 | /// A Type 1 font face. |
||
| 106 | /// </summary> |
||
| 107 | DWRITE_FONT_FACE_TYPE_TYPE1, |
||
| 108 | |||
| 109 | /// <summary> |
||
| 110 | /// A vector .FON format font face. |
||
| 111 | /// </summary> |
||
| 112 | DWRITE_FONT_FACE_TYPE_VECTOR, |
||
| 113 | |||
| 114 | /// <summary> |
||
| 115 | /// A bitmap .FON format font face. |
||
| 116 | /// </summary> |
||
| 117 | DWRITE_FONT_FACE_TYPE_BITMAP, |
||
| 118 | |||
| 119 | /// <summary> |
||
| 120 | /// Font face type is not recognized by the DirectWrite font system. |
||
| 121 | /// </summary> |
||
| 122 | DWRITE_FONT_FACE_TYPE_UNKNOWN |
||
| 123 | }; |
||
| 124 | |||
| 125 | /// <summary> |
||
| 126 | /// Specifies algorithmic style simulations to be applied to the font face. |
||
| 127 | /// Bold and oblique simulations can be combined via bitwise OR operation. |
||
| 128 | /// </summary> |
||
| 129 | enum DWRITE_FONT_SIMULATIONS |
||
| 130 | { |
||
| 131 | /// <summary> |
||
| 132 | /// No simulations are performed. |
||
| 133 | /// </summary> |
||
| 134 | DWRITE_FONT_SIMULATIONS_NONE = 0x0000, |
||
| 135 | |||
| 136 | /// <summary> |
||
| 137 | /// Algorithmic emboldening is performed. |
||
| 138 | /// </summary> |
||
| 139 | DWRITE_FONT_SIMULATIONS_BOLD = 0x0001, |
||
| 140 | |||
| 141 | /// <summary> |
||
| 142 | /// Algorithmic italicization is performed. |
||
| 143 | /// </summary> |
||
| 144 | DWRITE_FONT_SIMULATIONS_OBLIQUE = 0x0002 |
||
| 145 | }; |
||
| 146 | |||
| 147 | #ifdef DEFINE_ENUM_FLAG_OPERATORS |
||
| 148 | DEFINE_ENUM_FLAG_OPERATORS(DWRITE_FONT_SIMULATIONS); |
||
| 149 | #endif |
||
| 150 | |||
| 151 | /// <summary> |
||
| 152 | /// The font weight enumeration describes common values for degree of blackness or thickness of strokes of characters in a font. |
||
| 153 | /// Font weight values less than 1 or greater than 999 are considered to be invalid, and they are rejected by font API functions. |
||
| 154 | /// </summary> |
||
| 155 | enum DWRITE_FONT_WEIGHT |
||
| 156 | { |
||
| 157 | /// <summary> |
||
| 158 | /// Predefined font weight : Thin (100). |
||
| 159 | /// </summary> |
||
| 160 | DWRITE_FONT_WEIGHT_THIN = 100, |
||
| 161 | |||
| 162 | /// <summary> |
||
| 163 | /// Predefined font weight : Extra-light (200). |
||
| 164 | /// </summary> |
||
| 165 | DWRITE_FONT_WEIGHT_EXTRA_LIGHT = 200, |
||
| 166 | |||
| 167 | /// <summary> |
||
| 168 | /// Predefined font weight : Ultra-light (200). |
||
| 169 | /// </summary> |
||
| 170 | DWRITE_FONT_WEIGHT_ULTRA_LIGHT = 200, |
||
| 171 | |||
| 172 | /// <summary> |
||
| 173 | /// Predefined font weight : Light (300). |
||
| 174 | /// </summary> |
||
| 175 | DWRITE_FONT_WEIGHT_LIGHT = 300, |
||
| 176 | |||
| 177 | /// <summary> |
||
| 178 | /// Predefined font weight : Normal (400). |
||
| 179 | /// </summary> |
||
| 180 | DWRITE_FONT_WEIGHT_NORMAL = 400, |
||
| 181 | |||
| 182 | /// <summary> |
||
| 183 | /// Predefined font weight : Regular (400). |
||
| 184 | /// </summary> |
||
| 185 | DWRITE_FONT_WEIGHT_REGULAR = 400, |
||
| 186 | |||
| 187 | /// <summary> |
||
| 188 | /// Predefined font weight : Medium (500). |
||
| 189 | /// </summary> |
||
| 190 | DWRITE_FONT_WEIGHT_MEDIUM = 500, |
||
| 191 | |||
| 192 | /// <summary> |
||
| 193 | /// Predefined font weight : Demi-bold (600). |
||
| 194 | /// </summary> |
||
| 195 | DWRITE_FONT_WEIGHT_DEMI_BOLD = 600, |
||
| 196 | |||
| 197 | /// <summary> |
||
| 198 | /// Predefined font weight : Semi-bold (600). |
||
| 199 | /// </summary> |
||
| 200 | DWRITE_FONT_WEIGHT_SEMI_BOLD = 600, |
||
| 201 | |||
| 202 | /// <summary> |
||
| 203 | /// Predefined font weight : Bold (700). |
||
| 204 | /// </summary> |
||
| 205 | DWRITE_FONT_WEIGHT_BOLD = 700, |
||
| 206 | |||
| 207 | /// <summary> |
||
| 208 | /// Predefined font weight : Extra-bold (800). |
||
| 209 | /// </summary> |
||
| 210 | DWRITE_FONT_WEIGHT_EXTRA_BOLD = 800, |
||
| 211 | |||
| 212 | /// <summary> |
||
| 213 | /// Predefined font weight : Ultra-bold (800). |
||
| 214 | /// </summary> |
||
| 215 | DWRITE_FONT_WEIGHT_ULTRA_BOLD = 800, |
||
| 216 | |||
| 217 | /// <summary> |
||
| 218 | /// Predefined font weight : Black (900). |
||
| 219 | /// </summary> |
||
| 220 | DWRITE_FONT_WEIGHT_BLACK = 900, |
||
| 221 | |||
| 222 | /// <summary> |
||
| 223 | /// Predefined font weight : Heavy (900). |
||
| 224 | /// </summary> |
||
| 225 | DWRITE_FONT_WEIGHT_HEAVY = 900, |
||
| 226 | |||
| 227 | /// <summary> |
||
| 228 | /// Predefined font weight : Extra-black (950). |
||
| 229 | /// </summary> |
||
| 230 | DWRITE_FONT_WEIGHT_EXTRA_BLACK = 950, |
||
| 231 | |||
| 232 | /// <summary> |
||
| 233 | /// Predefined font weight : Ultra-black (950). |
||
| 234 | /// </summary> |
||
| 235 | DWRITE_FONT_WEIGHT_ULTRA_BLACK = 950 |
||
| 236 | }; |
||
| 237 | |||
| 238 | /// <summary> |
||
| 239 | /// The font stretch enumeration describes relative change from the normal aspect ratio |
||
| 240 | /// as specified by a font designer for the glyphs in a font. |
||
| 241 | /// Values less than 1 or greater than 9 are considered to be invalid, and they are rejected by font API functions. |
||
| 242 | /// </summary> |
||
| 243 | enum DWRITE_FONT_STRETCH |
||
| 244 | { |
||
| 245 | /// <summary> |
||
| 246 | /// Predefined font stretch : Not known (0). |
||
| 247 | /// </summary> |
||
| 248 | DWRITE_FONT_STRETCH_UNDEFINED = 0, |
||
| 249 | |||
| 250 | /// <summary> |
||
| 251 | /// Predefined font stretch : Ultra-condensed (1). |
||
| 252 | /// </summary> |
||
| 253 | DWRITE_FONT_STRETCH_ULTRA_CONDENSED = 1, |
||
| 254 | |||
| 255 | /// <summary> |
||
| 256 | /// Predefined font stretch : Extra-condensed (2). |
||
| 257 | /// </summary> |
||
| 258 | DWRITE_FONT_STRETCH_EXTRA_CONDENSED = 2, |
||
| 259 | |||
| 260 | /// <summary> |
||
| 261 | /// Predefined font stretch : Condensed (3). |
||
| 262 | /// </summary> |
||
| 263 | DWRITE_FONT_STRETCH_CONDENSED = 3, |
||
| 264 | |||
| 265 | /// <summary> |
||
| 266 | /// Predefined font stretch : Semi-condensed (4). |
||
| 267 | /// </summary> |
||
| 268 | DWRITE_FONT_STRETCH_SEMI_CONDENSED = 4, |
||
| 269 | |||
| 270 | /// <summary> |
||
| 271 | /// Predefined font stretch : Normal (5). |
||
| 272 | /// </summary> |
||
| 273 | DWRITE_FONT_STRETCH_NORMAL = 5, |
||
| 274 | |||
| 275 | /// <summary> |
||
| 276 | /// Predefined font stretch : Medium (5). |
||
| 277 | /// </summary> |
||
| 278 | DWRITE_FONT_STRETCH_MEDIUM = 5, |
||
| 279 | |||
| 280 | /// <summary> |
||
| 281 | /// Predefined font stretch : Semi-expanded (6). |
||
| 282 | /// </summary> |
||
| 283 | DWRITE_FONT_STRETCH_SEMI_EXPANDED = 6, |
||
| 284 | |||
| 285 | /// <summary> |
||
| 286 | /// Predefined font stretch : Expanded (7). |
||
| 287 | /// </summary> |
||
| 288 | DWRITE_FONT_STRETCH_EXPANDED = 7, |
||
| 289 | |||
| 290 | /// <summary> |
||
| 291 | /// Predefined font stretch : Extra-expanded (8). |
||
| 292 | /// </summary> |
||
| 293 | DWRITE_FONT_STRETCH_EXTRA_EXPANDED = 8, |
||
| 294 | |||
| 295 | /// <summary> |
||
| 296 | /// Predefined font stretch : Ultra-expanded (9). |
||
| 297 | /// </summary> |
||
| 298 | DWRITE_FONT_STRETCH_ULTRA_EXPANDED = 9 |
||
| 299 | }; |
||
| 300 | |||
| 301 | /// <summary> |
||
| 302 | /// The font style enumeration describes the slope style of a font face, such as Normal, Italic or Oblique. |
||
| 303 | /// Values other than the ones defined in the enumeration are considered to be invalid, and they are rejected by font API functions. |
||
| 304 | /// </summary> |
||
| 305 | enum DWRITE_FONT_STYLE |
||
| 306 | { |
||
| 307 | /// <summary> |
||
| 308 | /// Font slope style : Normal. |
||
| 309 | /// </summary> |
||
| 310 | DWRITE_FONT_STYLE_NORMAL, |
||
| 311 | |||
| 312 | /// <summary> |
||
| 313 | /// Font slope style : Oblique. |
||
| 314 | /// </summary> |
||
| 315 | DWRITE_FONT_STYLE_OBLIQUE, |
||
| 316 | |||
| 317 | /// <summary> |
||
| 318 | /// Font slope style : Italic. |
||
| 319 | /// </summary> |
||
| 320 | DWRITE_FONT_STYLE_ITALIC |
||
| 321 | |||
| 322 | }; |
||
| 323 | |||
| 324 | /// <summary> |
||
| 325 | /// The informational string enumeration identifies a string in a font. |
||
| 326 | /// </summary> |
||
| 327 | enum DWRITE_INFORMATIONAL_STRING_ID |
||
| 328 | { |
||
| 329 | /// <summary> |
||
| 330 | /// Unspecified name ID. |
||
| 331 | /// </summary> |
||
| 332 | DWRITE_INFORMATIONAL_STRING_NONE, |
||
| 333 | |||
| 334 | /// <summary> |
||
| 335 | /// Copyright notice provided by the font. |
||
| 336 | /// </summary> |
||
| 337 | DWRITE_INFORMATIONAL_STRING_COPYRIGHT_NOTICE, |
||
| 338 | |||
| 339 | /// <summary> |
||
| 340 | /// String containing a version number. |
||
| 341 | /// </summary> |
||
| 342 | DWRITE_INFORMATIONAL_STRING_VERSION_STRINGS, |
||
| 343 | |||
| 344 | /// <summary> |
||
| 345 | /// Trademark information provided by the font. |
||
| 346 | /// </summary> |
||
| 347 | DWRITE_INFORMATIONAL_STRING_TRADEMARK, |
||
| 348 | |||
| 349 | /// <summary> |
||
| 350 | /// Name of the font manufacturer. |
||
| 351 | /// </summary> |
||
| 352 | DWRITE_INFORMATIONAL_STRING_MANUFACTURER, |
||
| 353 | |||
| 354 | /// <summary> |
||
| 355 | /// Name of the font designer. |
||
| 356 | /// </summary> |
||
| 357 | DWRITE_INFORMATIONAL_STRING_DESIGNER, |
||
| 358 | |||
| 359 | /// <summary> |
||
| 360 | /// URL of font designer (with protocol, e.g., http://, ftp://). |
||
| 361 | /// </summary> |
||
| 362 | DWRITE_INFORMATIONAL_STRING_DESIGNER_URL, |
||
| 363 | |||
| 364 | /// <summary> |
||
| 365 | /// Description of the font. Can contain revision information, usage recommendations, history, features, etc. |
||
| 366 | /// </summary> |
||
| 367 | DWRITE_INFORMATIONAL_STRING_DESCRIPTION, |
||
| 368 | |||
| 369 | /// <summary> |
||
| 370 | /// URL of font vendor (with protocol, e.g., http://, ftp://). If a unique serial number is embedded in the URL, it can be used to register the font. |
||
| 371 | /// </summary> |
||
| 372 | DWRITE_INFORMATIONAL_STRING_FONT_VENDOR_URL, |
||
| 373 | |||
| 374 | /// <summary> |
||
| 375 | /// Description of how the font may be legally used, or different example scenarios for licensed use. This field should be written in plain language, not legalese. |
||
| 376 | /// </summary> |
||
| 377 | DWRITE_INFORMATIONAL_STRING_LICENSE_DESCRIPTION, |
||
| 378 | |||
| 379 | /// <summary> |
||
| 380 | /// URL where additional licensing information can be found. |
||
| 381 | /// </summary> |
||
| 382 | DWRITE_INFORMATIONAL_STRING_LICENSE_INFO_URL, |
||
| 383 | |||
| 384 | /// <summary> |
||
| 385 | /// GDI-compatible family name. Because GDI allows a maximum of four fonts per family, fonts in the same family may have different GDI-compatible family names |
||
| 386 | /// (e.g., "Arial", "Arial Narrow", "Arial Black"). |
||
| 387 | /// </summary> |
||
| 388 | DWRITE_INFORMATIONAL_STRING_WIN32_FAMILY_NAMES, |
||
| 389 | |||
| 390 | /// <summary> |
||
| 391 | /// GDI-compatible subfamily name. |
||
| 392 | /// </summary> |
||
| 393 | DWRITE_INFORMATIONAL_STRING_WIN32_SUBFAMILY_NAMES, |
||
| 394 | |||
| 395 | /// <summary> |
||
| 396 | /// Family name preferred by the designer. This enables font designers to group more than four fonts in a single family without losing compatibility with |
||
| 397 | /// GDI. This name is typically only present if it differs from the GDI-compatible family name. |
||
| 398 | /// </summary> |
||
| 399 | DWRITE_INFORMATIONAL_STRING_PREFERRED_FAMILY_NAMES, |
||
| 400 | |||
| 401 | /// <summary> |
||
| 402 | /// Subfamily name preferred by the designer. This name is typically only present if it differs from the GDI-compatible subfamily name. |
||
| 403 | /// </summary> |
||
| 404 | DWRITE_INFORMATIONAL_STRING_PREFERRED_SUBFAMILY_NAMES, |
||
| 405 | |||
| 406 | /// <summary> |
||
| 407 | /// Sample text. This can be the font name or any other text that the designer thinks is the best example to display the font in. |
||
| 408 | /// </summary> |
||
| 409 | DWRITE_INFORMATIONAL_STRING_SAMPLE_TEXT |
||
| 410 | }; |
||
| 411 | |||
| 412 | |||
| 413 | /// <summary> |
||
| 414 | /// The DWRITE_FONT_METRICS structure specifies the metrics of a font face that |
||
| 415 | /// are applicable to all glyphs within the font face. |
||
| 416 | /// </summary> |
||
| 417 | struct DWRITE_FONT_METRICS |
||
| 418 | { |
||
| 419 | /// <summary> |
||
| 420 | /// The number of font design units per em unit. |
||
| 421 | /// Font files use their own coordinate system of font design units. |
||
| 422 | /// A font design unit is the smallest measurable unit in the em square, |
||
| 423 | /// an imaginary square that is used to size and align glyphs. |
||
| 424 | /// The concept of em square is used as a reference scale factor when defining font size and device transformation semantics. |
||
| 425 | /// The size of one em square is also commonly used to compute the paragraph identation value. |
||
| 426 | /// </summary> |
||
| 427 | UINT16 designUnitsPerEm; |
||
| 428 | |||
| 429 | /// <summary> |
||
| 430 | /// Ascent value of the font face in font design units. |
||
| 431 | /// Ascent is the distance from the top of font character alignment box to English baseline. |
||
| 432 | /// </summary> |
||
| 433 | UINT16 ascent; |
||
| 434 | |||
| 435 | /// <summary> |
||
| 436 | /// Descent value of the font face in font design units. |
||
| 437 | /// Descent is the distance from the bottom of font character alignment box to English baseline. |
||
| 438 | /// </summary> |
||
| 439 | UINT16 descent; |
||
| 440 | |||
| 441 | /// <summary> |
||
| 442 | /// Line gap in font design units. |
||
| 443 | /// Recommended additional white space to add between lines to improve legibility. The recommended line spacing |
||
| 444 | /// (baseline-to-baseline distance) is thus the sum of ascent, descent, and lineGap. The line gap is usually |
||
| 445 | /// positive or zero but can be negative, in which case the recommended line spacing is less than the height |
||
| 446 | /// of the character alignment box. |
||
| 447 | /// </summary> |
||
| 448 | INT16 lineGap; |
||
| 449 | |||
| 450 | /// <summary> |
||
| 451 | /// Cap height value of the font face in font design units. |
||
| 452 | /// Cap height is the distance from English baseline to the top of a typical English capital. |
||
| 453 | /// Capital "H" is often used as a reference character for the purpose of calculating the cap height value. |
||
| 454 | /// </summary> |
||
| 455 | UINT16 capHeight; |
||
| 456 | |||
| 457 | /// <summary> |
||
| 458 | /// x-height value of the font face in font design units. |
||
| 459 | /// x-height is the distance from English baseline to the top of lowercase letter "x", or a similar lowercase character. |
||
| 460 | /// </summary> |
||
| 461 | UINT16 xHeight; |
||
| 462 | |||
| 463 | /// <summary> |
||
| 464 | /// The underline position value of the font face in font design units. |
||
| 465 | /// Underline position is the position of underline relative to the English baseline. |
||
| 466 | /// The value is usually made negative in order to place the underline below the baseline. |
||
| 467 | /// </summary> |
||
| 468 | INT16 underlinePosition; |
||
| 469 | |||
| 470 | /// <summary> |
||
| 471 | /// The suggested underline thickness value of the font face in font design units. |
||
| 472 | /// </summary> |
||
| 473 | UINT16 underlineThickness; |
||
| 474 | |||
| 475 | /// <summary> |
||
| 476 | /// The strikethrough position value of the font face in font design units. |
||
| 477 | /// Strikethrough position is the position of strikethrough relative to the English baseline. |
||
| 478 | /// The value is usually made positive in order to place the strikethrough above the baseline. |
||
| 479 | /// </summary> |
||
| 480 | INT16 strikethroughPosition; |
||
| 481 | |||
| 482 | /// <summary> |
||
| 483 | /// The suggested strikethrough thickness value of the font face in font design units. |
||
| 484 | /// </summary> |
||
| 485 | UINT16 strikethroughThickness; |
||
| 486 | }; |
||
| 487 | |||
| 488 | /// <summary> |
||
| 489 | /// The DWRITE_GLYPH_METRICS structure specifies the metrics of an individual glyph. |
||
| 490 | /// The units depend on how the metrics are obtained. |
||
| 491 | /// </summary> |
||
| 492 | struct DWRITE_GLYPH_METRICS |
||
| 493 | { |
||
| 494 | /// <summary> |
||
| 495 | /// Specifies the X offset from the glyph origin to the left edge of the black box. |
||
| 496 | /// The glyph origin is the current horizontal writing position. |
||
| 497 | /// A negative value means the black box extends to the left of the origin (often true for lowercase italic 'f'). |
||
| 498 | /// </summary> |
||
| 499 | INT32 leftSideBearing; |
||
| 500 | |||
| 501 | /// <summary> |
||
| 502 | /// Specifies the X offset from the origin of the current glyph to the origin of the next glyph when writing horizontally. |
||
| 503 | /// </summary> |
||
| 504 | UINT32 advanceWidth; |
||
| 505 | |||
| 506 | /// <summary> |
||
| 507 | /// Specifies the X offset from the right edge of the black box to the origin of the next glyph when writing horizontally. |
||
| 508 | /// The value is negative when the right edge of the black box overhangs the layout box. |
||
| 509 | /// </summary> |
||
| 510 | INT32 rightSideBearing; |
||
| 511 | |||
| 512 | /// <summary> |
||
| 513 | /// Specifies the vertical offset from the vertical origin to the top of the black box. |
||
| 514 | /// Thus, a positive value adds whitespace whereas a negative value means the glyph overhangs the top of the layout box. |
||
| 515 | /// </summary> |
||
| 516 | INT32 topSideBearing; |
||
| 517 | |||
| 518 | /// <summary> |
||
| 519 | /// Specifies the Y offset from the vertical origin of the current glyph to the vertical origin of the next glyph when writing vertically. |
||
| 520 | /// (Note that the term "origin" by itself denotes the horizontal origin. The vertical origin is different. |
||
| 521 | /// Its Y coordinate is specified by verticalOriginY value, |
||
| 522 | /// and its X coordinate is half the advanceWidth to the right of the horizontal origin). |
||
| 523 | /// </summary> |
||
| 524 | UINT32 advanceHeight; |
||
| 525 | |||
| 526 | /// <summary> |
||
| 527 | /// Specifies the vertical distance from the black box's bottom edge to the advance height. |
||
| 528 | /// Positive when the bottom edge of the black box is within the layout box. |
||
| 529 | /// Negative when the bottom edge of black box overhangs the layout box. |
||
| 530 | /// </summary> |
||
| 531 | INT32 bottomSideBearing; |
||
| 532 | |||
| 533 | /// <summary> |
||
| 534 | /// Specifies the Y coordinate of a glyph's vertical origin, in the font's design coordinate system. |
||
| 535 | /// The y coordinate of a glyph's vertical origin is the sum of the glyph's top side bearing |
||
| 536 | /// and the top (i.e. yMax) of the glyph's bounding box. |
||
| 537 | /// </summary> |
||
| 538 | INT32 verticalOriginY; |
||
| 539 | }; |
||
| 540 | |||
| 541 | /// <summary> |
||
| 542 | /// Optional adjustment to a glyph's position. An glyph offset changes the position of a glyph without affecting |
||
| 543 | /// the pen position. Offsets are in logical, pre-transform units. |
||
| 544 | /// </summary> |
||
| 545 | struct DWRITE_GLYPH_OFFSET |
||
| 546 | { |
||
| 547 | /// <summary> |
||
| 548 | /// Offset in the advance direction of the run. A positive advance offset moves the glyph to the right |
||
| 549 | /// (in pre-transform coordinates) if the run is left-to-right or to the left if the run is right-to-left. |
||
| 550 | /// </summary> |
||
| 551 | FLOAT advanceOffset; |
||
| 552 | |||
| 553 | /// <summary> |
||
| 554 | /// Offset in the ascent direction, i.e., the direction ascenders point. A positive ascender offset moves |
||
| 555 | /// the glyph up (in pre-transform coordinates). |
||
| 556 | /// </summary> |
||
| 557 | FLOAT ascenderOffset; |
||
| 558 | }; |
||
| 559 | |||
| 560 | /// <summary> |
||
| 561 | /// Specifies the type of DirectWrite factory object. |
||
| 562 | /// DirectWrite factory contains internal state such as font loader registration and cached font data. |
||
| 563 | /// In most cases it is recommended to use the shared factory object, because it allows multiple components |
||
| 564 | /// that use DirectWrite to share internal DirectWrite state and reduce memory usage. |
||
| 565 | /// However, there are cases when it is desirable to reduce the impact of a component, |
||
| 566 | /// such as a plug-in from an untrusted source, on the rest of the process by sandboxing and isolating it |
||
| 567 | /// from the rest of the process components. In such cases, it is recommended to use an isolated factory for the sandboxed |
||
| 568 | /// component. |
||
| 569 | /// </summary> |
||
| 570 | enum DWRITE_FACTORY_TYPE |
||
| 571 | { |
||
| 572 | /// <summary> |
||
| 573 | /// Shared factory allow for re-use of cached font data across multiple in process components. |
||
| 574 | /// Such factories also take advantage of cross process font caching components for better performance. |
||
| 575 | /// </summary> |
||
| 576 | DWRITE_FACTORY_TYPE_SHARED, |
||
| 577 | |||
| 578 | /// <summary> |
||
| 579 | /// Objects created from the isolated factory do not interact with internal DirectWrite state from other components. |
||
| 580 | /// </summary> |
||
| 581 | DWRITE_FACTORY_TYPE_ISOLATED |
||
| 582 | }; |
||
| 583 | |||
| 584 | // Creates an OpenType tag as a 32bit integer such that |
||
| 585 | // the first character in the tag is the lowest byte, |
||
| 586 | // (least significant on little endian architectures) |
||
| 587 | // which can be used to compare with tags in the font file. |
||
| 588 | // This macro is compatible with DWRITE_FONT_FEATURE_TAG. |
||
| 589 | // |
||
| 590 | // Example: DWRITE_MAKE_OPENTYPE_TAG('c','c','m','p') |
||
| 591 | // Dword: 0x706D6363 |
||
| 592 | // |
||
| 593 | #define DWRITE_MAKE_OPENTYPE_TAG(a,b,c,d) ( \ |
||
| 594 | (static_cast<UINT32>(static_cast<UINT8>(d)) << 24) | \ |
||
| 595 | (static_cast<UINT32>(static_cast<UINT8>(c)) << 16) | \ |
||
| 596 | (static_cast<UINT32>(static_cast<UINT8>(b)) << 8) | \ |
||
| 597 | static_cast<UINT32>(static_cast<UINT8>(a))) |
||
| 598 | |||
| 599 | interface IDWriteFontFileStream; |
||
| 600 | |||
| 601 | /// <summary> |
||
| 602 | /// Font file loader interface handles loading font file resources of a particular type from a key. |
||
| 603 | /// The font file loader interface is recommended to be implemented by a singleton object. |
||
| 604 | /// IMPORTANT: font file loader implementations must not register themselves with DirectWrite factory |
||
| 605 | /// inside their constructors and must not unregister themselves in their destructors, because |
||
| 606 | /// registration and unregistraton operations increment and decrement the object reference count respectively. |
||
| 607 | /// Instead, registration and unregistration of font file loaders with DirectWrite factory should be performed |
||
| 608 | /// outside of the font file loader implementation as a separate step. |
||
| 609 | /// </summary> |
||
| 610 | interface DWRITE_DECLARE_INTERFACE("727cad4e-d6af-4c9e-8a08-d695b11caa49") IDWriteFontFileLoader : public IUnknown |
||
| 611 | { |
||
| 612 | /// <summary> |
||
| 613 | /// Creates a font file stream object that encapsulates an open file resource. |
||
| 614 | /// The resource is closed when the last reference to fontFileStream is released. |
||
| 615 | /// </summary> |
||
| 616 | /// <param name="fontFileReferenceKey">Font file reference key that uniquely identifies the font file resource |
||
| 617 | /// within the scope of the font loader being used.</param> |
||
| 618 | /// <param name="fontFileReferenceKeySize">Size of font file reference key in bytes.</param> |
||
| 619 | /// <param name="fontFileStream">Pointer to the newly created font file stream.</param> |
||
| 620 | /// <returns> |
||
| 621 | /// Standard HRESULT error code. |
||
| 622 | /// </returns> |
||
| 623 | STDMETHOD(CreateStreamFromKey)( |
||
| 624 | __in_bcount(fontFileReferenceKeySize) void const* fontFileReferenceKey, |
||
| 625 | UINT32 fontFileReferenceKeySize, |
||
| 626 | __out IDWriteFontFileStream** fontFileStream |
||
| 627 | ) PURE; |
||
| 628 | }; |
||
| 629 | |||
| 630 | /// <summary> |
||
| 631 | /// A built-in implementation of IDWriteFontFileLoader interface that operates on local font files |
||
| 632 | /// and exposes local font file information from the font file reference key. |
||
| 633 | /// Font file references created using CreateFontFileReference use this font file loader. |
||
| 634 | /// </summary> |
||
| 635 | interface DWRITE_DECLARE_INTERFACE("b2d9f3ec-c9fe-4a11-a2ec-d86208f7c0a2") IDWriteLocalFontFileLoader : public IDWriteFontFileLoader |
||
| 636 | { |
||
| 637 | /// <summary> |
||
| 638 | /// Obtains the length of the absolute file path from the font file reference key. |
||
| 639 | /// </summary> |
||
| 640 | /// <param name="fontFileReferenceKey">Font file reference key that uniquely identifies the local font file |
||
| 641 | /// within the scope of the font loader being used.</param> |
||
| 642 | /// <param name="fontFileReferenceKeySize">Size of font file reference key in bytes.</param> |
||
| 643 | /// <param name="filePathLength">Length of the file path string not including the terminated NULL character.</param> |
||
| 644 | /// <returns> |
||
| 645 | /// Standard HRESULT error code. |
||
| 646 | /// </returns> |
||
| 647 | STDMETHOD(GetFilePathLengthFromKey)( |
||
| 648 | __in_bcount(fontFileReferenceKeySize) void const* fontFileReferenceKey, |
||
| 649 | UINT32 fontFileReferenceKeySize, |
||
| 650 | __out UINT32* filePathLength |
||
| 651 | ) PURE; |
||
| 652 | |||
| 653 | /// <summary> |
||
| 654 | /// Obtains the absolute font file path from the font file reference key. |
||
| 655 | /// </summary> |
||
| 656 | /// <param name="fontFileReferenceKey">Font file reference key that uniquely identifies the local font file |
||
| 657 | /// within the scope of the font loader being used.</param> |
||
| 658 | /// <param name="fontFileReferenceKeySize">Size of font file reference key in bytes.</param> |
||
| 659 | /// <param name="filePath">Character array that receives the local file path.</param> |
||
| 660 | /// <param name="filePathSize">Size of the filePath array in character count including the terminated NULL character.</param> |
||
| 661 | /// <returns> |
||
| 662 | /// Standard HRESULT error code. |
||
| 663 | /// </returns> |
||
| 664 | STDMETHOD(GetFilePathFromKey)( |
||
| 665 | __in_bcount(fontFileReferenceKeySize) void const* fontFileReferenceKey, |
||
| 666 | UINT32 fontFileReferenceKeySize, |
||
| 667 | __out_ecount_z(filePathSize) WCHAR* filePath, |
||
| 668 | UINT32 filePathSize |
||
| 669 | ) PURE; |
||
| 670 | |||
| 671 | /// <summary> |
||
| 672 | /// Obtains the last write time of the file from the font file reference key. |
||
| 673 | /// </summary> |
||
| 674 | /// <param name="fontFileReferenceKey">Font file reference key that uniquely identifies the local font file |
||
| 675 | /// within the scope of the font loader being used.</param> |
||
| 676 | /// <param name="fontFileReferenceKeySize">Size of font file reference key in bytes.</param> |
||
| 677 | /// <param name="lastWriteTime">Last modified time of the font file.</param> |
||
| 678 | /// <returns> |
||
| 679 | /// Standard HRESULT error code. |
||
| 680 | /// </returns> |
||
| 681 | STDMETHOD(GetLastWriteTimeFromKey)( |
||
| 682 | __in_bcount(fontFileReferenceKeySize) void const* fontFileReferenceKey, |
||
| 683 | UINT32 fontFileReferenceKeySize, |
||
| 684 | __out FILETIME* lastWriteTime |
||
| 685 | ) PURE; |
||
| 686 | }; |
||
| 687 | |||
| 688 | /// <summary> |
||
| 689 | /// The interface for loading font file data. |
||
| 690 | /// </summary> |
||
| 691 | interface DWRITE_DECLARE_INTERFACE("6d4865fe-0ab8-4d91-8f62-5dd6be34a3e0") IDWriteFontFileStream : public IUnknown |
||
| 692 | { |
||
| 693 | /// <summary> |
||
| 694 | /// Reads a fragment from a file. |
||
| 695 | /// </summary> |
||
| 696 | /// <param name="fragmentStart">Receives the pointer to the start of the font file fragment.</param> |
||
| 697 | /// <param name="fileOffset">Offset of the fragment from the beginning of the font file.</param> |
||
| 698 | /// <param name="fragmentSize">Size of the fragment in bytes.</param> |
||
| 699 | /// <param name="fragmentContext">The client defined context to be passed to the ReleaseFileFragment.</param> |
||
| 700 | /// <returns> |
||
| 701 | /// Standard HRESULT error code. |
||
| 702 | /// </returns> |
||
| 703 | /// <remarks> |
||
| 704 | /// IMPORTANT: ReadFileFragment() implementations must check whether the requested file fragment |
||
| 705 | /// is within the file bounds. Otherwise, an error should be returned from ReadFileFragment. |
||
| 706 | /// </remarks> |
||
| 707 | STDMETHOD(ReadFileFragment)( |
||
| 708 | __deref_out_bcount(fragmentSize) void const** fragmentStart, |
||
| 709 | UINT64 fileOffset, |
||
| 710 | UINT64 fragmentSize, |
||
| 711 | __out void** fragmentContext |
||
| 712 | ) PURE; |
||
| 713 | |||
| 714 | /// <summary> |
||
| 715 | /// Releases a fragment from a file. |
||
| 716 | /// </summary> |
||
| 717 | /// <param name="fragmentContext">The client defined context of a font fragment returned from ReadFileFragment.</param> |
||
| 718 | STDMETHOD_(void, ReleaseFileFragment)( |
||
| 719 | void* fragmentContext |
||
| 720 | ) PURE; |
||
| 721 | |||
| 722 | /// <summary> |
||
| 723 | /// Obtains the total size of a file. |
||
| 724 | /// </summary> |
||
| 725 | /// <param name="fileSize">Receives the total size of the file.</param> |
||
| 726 | /// <returns> |
||
| 727 | /// Standard HRESULT error code. |
||
| 728 | /// </returns> |
||
| 729 | /// <remarks> |
||
| 730 | /// Implementing GetFileSize() for asynchronously loaded font files may require |
||
| 731 | /// downloading the complete file contents, therefore this method should only be used for operations that |
||
| 732 | /// either require complete font file to be loaded (e.g., copying a font file) or need to make |
||
| 733 | /// decisions based on the value of the file size (e.g., validation against a persisted file size). |
||
| 734 | /// </remarks> |
||
| 735 | STDMETHOD(GetFileSize)( |
||
| 736 | __out UINT64* fileSize |
||
| 737 | ) PURE; |
||
| 738 | |||
| 739 | /// <summary> |
||
| 740 | /// Obtains the last modified time of the file. The last modified time is used by DirectWrite font selection algorithms |
||
| 741 | /// to determine whether one font resource is more up to date than another one. |
||
| 742 | /// </summary> |
||
| 743 | /// <param name="lastWriteTime">Receives the last modifed time of the file in the format that represents |
||
| 744 | /// the number of 100-nanosecond intervals since January 1, 1601 (UTC).</param> |
||
| 745 | /// <returns> |
||
| 746 | /// Standard HRESULT error code. For resources that don't have a concept of the last modified time, the implementation of |
||
| 747 | /// GetLastWriteTime should return E_NOTIMPL. |
||
| 748 | /// </returns> |
||
| 749 | STDMETHOD(GetLastWriteTime)( |
||
| 750 | __out UINT64* lastWriteTime |
||
| 751 | ) PURE; |
||
| 752 | }; |
||
| 753 | |||
| 754 | /// <summary> |
||
| 755 | /// The interface that represents a reference to a font file. |
||
| 756 | /// </summary> |
||
| 757 | interface DWRITE_DECLARE_INTERFACE("739d886a-cef5-47dc-8769-1a8b41bebbb0") IDWriteFontFile : public IUnknown |
||
| 758 | { |
||
| 759 | /// <summary> |
||
| 760 | /// This method obtains the pointer to the reference key of a font file. The pointer is only valid until the object that refers to it is released. |
||
| 761 | /// </summary> |
||
| 762 | /// <param name="fontFileReferenceKey">Pointer to the font file reference key. |
||
| 763 | /// IMPORTANT: The pointer value is valid until the font file reference object it is obtained from is released.</param> |
||
| 764 | /// <param name="fontFileReferenceKeySize">Size of font file reference key in bytes.</param> |
||
| 765 | /// <returns> |
||
| 766 | /// Standard HRESULT error code. |
||
| 767 | /// </returns> |
||
| 768 | STDMETHOD(GetReferenceKey)( |
||
| 769 | __deref_out_bcount(*fontFileReferenceKeySize) void const** fontFileReferenceKey, |
||
| 770 | __out UINT32* fontFileReferenceKeySize |
||
| 771 | ) PURE; |
||
| 772 | |||
| 773 | /// <summary> |
||
| 774 | /// Obtains the file loader associated with a font file object. |
||
| 775 | /// </summary> |
||
| 776 | /// <param name="fontFileLoader">The font file loader associated with the font file object.</param> |
||
| 777 | /// <returns> |
||
| 778 | /// Standard HRESULT error code. |
||
| 779 | /// </returns> |
||
| 780 | STDMETHOD(GetLoader)( |
||
| 781 | __out IDWriteFontFileLoader** fontFileLoader |
||
| 782 | ) PURE; |
||
| 783 | |||
| 784 | /// <summary> |
||
| 785 | /// Analyzes a file and returns whether it represents a font, and whether the font type is supported by the font system. |
||
| 786 | /// </summary> |
||
| 787 | /// <param name="isSupportedFontType">TRUE if the font type is supported by the font system, FALSE otherwise.</param> |
||
| 788 | /// <param name="fontFileType">The type of the font file. Note that even if isSupportedFontType is FALSE, |
||
| 789 | /// the fontFileType value may be different from DWRITE_FONT_FILE_TYPE_UNKNOWN.</param> |
||
| 790 | /// <param name="fontFaceType">The type of the font face that can be constructed from the font file. |
||
| 791 | /// Note that even if isSupportedFontType is FALSE, the fontFaceType value may be different from |
||
| 792 | /// DWRITE_FONT_FACE_TYPE_UNKNOWN.</param> |
||
| 793 | /// <param name="numberOfFaces">Number of font faces contained in the font file.</param> |
||
| 794 | /// <returns> |
||
| 795 | /// Standard HRESULT error code if there was a processing error during analysis. |
||
| 796 | /// </returns> |
||
| 797 | /// <remarks> |
||
| 798 | /// IMPORTANT: certain font file types are recognized, but not supported by the font system. |
||
| 799 | /// For example, the font system will recognize a file as a Type 1 font file, |
||
| 800 | /// but will not be able to construct a font face object from it. In such situations, Analyze will set |
||
| 801 | /// isSupportedFontType output parameter to FALSE. |
||
| 802 | /// </remarks> |
||
| 803 | STDMETHOD(Analyze)( |
||
| 804 | __out BOOL* isSupportedFontType, |
||
| 805 | __out DWRITE_FONT_FILE_TYPE* fontFileType, |
||
| 806 | __out_opt DWRITE_FONT_FACE_TYPE* fontFaceType, |
||
| 807 | __out UINT32* numberOfFaces |
||
| 808 | ) PURE; |
||
| 809 | }; |
||
| 810 | |||
| 811 | /// <summary> |
||
| 812 | /// Represents the internal structure of a device pixel (i.e., the physical arrangement of red, |
||
| 813 | /// green, and blue color components) that is assumed for purposes of rendering text. |
||
| 814 | /// </summary> |
||
| 815 | #ifndef DWRITE_PIXEL_GEOMETRY_DEFINED |
||
| 816 | enum DWRITE_PIXEL_GEOMETRY |
||
| 817 | { |
||
| 818 | /// <summary> |
||
| 819 | /// The red, green, and blue color components of each pixel are assumed to occupy the same point. |
||
| 820 | /// </summary> |
||
| 821 | DWRITE_PIXEL_GEOMETRY_FLAT, |
||
| 822 | |||
| 823 | /// <summary> |
||
| 824 | /// Each pixel comprises three vertical stripes, with red on the left, green in the center, and |
||
| 825 | /// blue on the right. This is the most common pixel geometry for LCD monitors. |
||
| 826 | /// </summary> |
||
| 827 | DWRITE_PIXEL_GEOMETRY_RGB, |
||
| 828 | |||
| 829 | /// <summary> |
||
| 830 | /// Each pixel comprises three vertical stripes, with blue on the left, green in the center, and |
||
| 831 | /// red on the right. |
||
| 832 | /// </summary> |
||
| 833 | DWRITE_PIXEL_GEOMETRY_BGR |
||
| 834 | }; |
||
| 835 | #define DWRITE_PIXEL_GEOMETRY_DEFINED |
||
| 836 | #endif |
||
| 837 | |||
| 838 | /// <summary> |
||
| 839 | /// Represents a method of rendering glyphs. |
||
| 840 | /// </summary> |
||
| 841 | enum DWRITE_RENDERING_MODE |
||
| 842 | { |
||
| 843 | /// <summary> |
||
| 844 | /// Specifies that the rendering mode is determined automatically based on the font and size. |
||
| 845 | /// </summary> |
||
| 846 | DWRITE_RENDERING_MODE_DEFAULT, |
||
| 847 | |||
| 848 | /// <summary> |
||
| 849 | /// Specifies that no anti-aliasing is performed. Each pixel is either set to the foreground |
||
| 850 | /// color of the text or retains the color of the background. |
||
| 851 | /// </summary> |
||
| 852 | DWRITE_RENDERING_MODE_ALIASED, |
||
| 853 | |||
| 854 | /// <summary> |
||
| 855 | /// Specifies ClearType rendering with the same metrics as aliased text. Glyphs can only |
||
| 856 | /// be positioned on whole-pixel boundaries. |
||
| 857 | /// </summary> |
||
| 858 | DWRITE_RENDERING_MODE_CLEARTYPE_GDI_CLASSIC, |
||
| 859 | |||
| 860 | /// <summary> |
||
| 861 | /// Specifies ClearType rendering with the same metrics as text rendering using GDI using a font |
||
| 862 | /// created with CLEARTYPE_NATURAL_QUALITY. Glyph metrics are closer to their ideal values than |
||
| 863 | /// with aliased text, but glyphs are still positioned on whole-pixel boundaries. |
||
| 864 | /// </summary> |
||
| 865 | DWRITE_RENDERING_MODE_CLEARTYPE_GDI_NATURAL, |
||
| 866 | |||
| 867 | /// <summary> |
||
| 868 | /// Specifies ClearType rendering with anti-aliasing in the horizontal dimension only. This is |
||
| 869 | /// typically used with small to medium font sizes (up to 16 ppem). |
||
| 870 | /// </summary> |
||
| 871 | DWRITE_RENDERING_MODE_CLEARTYPE_NATURAL, |
||
| 872 | |||
| 873 | /// <summary> |
||
| 874 | /// Specifies ClearType rendering with anti-aliasing in both horizontal and vertical dimensions. |
||
| 875 | /// This is typically used at larger sizes to makes curves and diagonal lines look smoother, at |
||
| 876 | /// the expense of some softness. |
||
| 877 | /// </summary> |
||
| 878 | DWRITE_RENDERING_MODE_CLEARTYPE_NATURAL_SYMMETRIC, |
||
| 879 | |||
| 880 | /// <summary> |
||
| 881 | /// Specifies that rendering should bypass the rasterizer and use the outlines directly. This is |
||
| 882 | /// typically used at very large sizes. |
||
| 883 | /// </summary> |
||
| 884 | DWRITE_RENDERING_MODE_OUTLINE |
||
| 885 | }; |
||
| 886 | |||
| 887 | /// <summary> |
||
| 888 | /// The DWRITE_MATRIX structure specifies the graphics transform to be applied |
||
| 889 | /// to rendered glyphs. |
||
| 890 | /// </summary> |
||
| 891 | struct DWRITE_MATRIX |
||
| 892 | { |
||
| 893 | /// <summary> |
||
| 894 | /// Horizontal scaling / cosine of rotation |
||
| 895 | /// </summary> |
||
| 896 | FLOAT m11; |
||
| 897 | |||
| 898 | /// <summary> |
||
| 899 | /// Vertical shear / sine of rotation |
||
| 900 | /// </summary> |
||
| 901 | FLOAT m12; |
||
| 902 | |||
| 903 | /// <summary> |
||
| 904 | /// Horizontal shear / negative sine of rotation |
||
| 905 | /// </summary> |
||
| 906 | FLOAT m21; |
||
| 907 | |||
| 908 | /// <summary> |
||
| 909 | /// Vertical scaling / cosine of rotation |
||
| 910 | /// </summary> |
||
| 911 | FLOAT m22; |
||
| 912 | |||
| 913 | /// <summary> |
||
| 914 | /// Horizontal shift (always orthogonal regardless of rotation) |
||
| 915 | /// </summary> |
||
| 916 | FLOAT dx; |
||
| 917 | |||
| 918 | /// <summary> |
||
| 919 | /// Vertical shift (always orthogonal regardless of rotation) |
||
| 920 | /// </summary> |
||
| 921 | FLOAT dy; |
||
| 922 | }; |
||
| 923 | |||
| 924 | /// <summary> |
||
| 925 | /// The interface that represents text rendering settings for glyph rasterization and filtering. |
||
| 926 | /// </summary> |
||
| 927 | interface DWRITE_DECLARE_INTERFACE("2f0da53a-2add-47cd-82ee-d9ec34688e75") IDWriteRenderingParams : public IUnknown |
||
| 928 | { |
||
| 929 | /// <summary> |
||
| 930 | /// Gets the gamma value used for gamma correction. Valid values must be |
||
| 931 | /// greater than zero and cannot exceed 256. |
||
| 932 | /// </summary> |
||
| 933 | STDMETHOD_(FLOAT, GetGamma)() PURE; |
||
| 934 | |||
| 935 | /// <summary> |
||
| 936 | /// Gets the amount of contrast enhancement. Valid values are greater than |
||
| 937 | /// or equal to zero. |
||
| 938 | /// </summary> |
||
| 939 | STDMETHOD_(FLOAT, GetEnhancedContrast)() PURE; |
||
| 940 | |||
| 941 | /// <summary> |
||
| 942 | /// Gets the ClearType level. Valid values range from 0.0f (no ClearType) |
||
| 943 | /// to 1.0f (full ClearType). |
||
| 944 | /// </summary> |
||
| 945 | STDMETHOD_(FLOAT, GetClearTypeLevel)() PURE; |
||
| 946 | |||
| 947 | /// <summary> |
||
| 948 | /// Gets the pixel geometry. |
||
| 949 | /// </summary> |
||
| 950 | STDMETHOD_(DWRITE_PIXEL_GEOMETRY, GetPixelGeometry)() PURE; |
||
| 951 | |||
| 952 | /// <summary> |
||
| 953 | /// Gets the rendering mode. |
||
| 954 | /// </summary> |
||
| 955 | STDMETHOD_(DWRITE_RENDERING_MODE, GetRenderingMode)() PURE; |
||
| 956 | }; |
||
| 957 | |||
| 958 | // Forward declarations of D2D types |
||
| 959 | interface ID2D1SimplifiedGeometrySink; |
||
| 960 | |||
| 961 | typedef ID2D1SimplifiedGeometrySink IDWriteGeometrySink; |
||
| 962 | |||
| 963 | /// <summary> |
||
| 964 | /// The interface that represents an absolute reference to a font face. |
||
| 965 | /// It contains font face type, appropriate file references and face identification data. |
||
| 966 | /// Various font data such as metrics, names and glyph outlines is obtained from IDWriteFontFace. |
||
| 967 | /// </summary> |
||
| 968 | interface DWRITE_DECLARE_INTERFACE("5f49804d-7024-4d43-bfa9-d25984f53849") IDWriteFontFace : public IUnknown |
||
| 969 | { |
||
| 970 | /// <summary> |
||
| 971 | /// Obtains the file format type of a font face. |
||
| 972 | /// </summary> |
||
| 973 | STDMETHOD_(DWRITE_FONT_FACE_TYPE, GetType)() PURE; |
||
| 974 | |||
| 975 | /// <summary> |
||
| 976 | /// Obtains the font files representing a font face. |
||
| 977 | /// </summary> |
||
| 978 | /// <param name="numberOfFiles">The number of files representing the font face.</param> |
||
| 979 | /// <param name="fontFiles">User provided array that stores pointers to font files representing the font face. |
||
| 980 | /// This parameter can be NULL if the user is only interested in the number of files representing the font face. |
||
| 981 | /// This API increments reference count of the font file pointers returned according to COM conventions, and the client |
||
| 982 | /// should release them when finished.</param> |
||
| 983 | /// <returns> |
||
| 984 | /// Standard HRESULT error code. |
||
| 985 | /// </returns> |
||
| 986 | STDMETHOD(GetFiles)( |
||
| 987 | __inout UINT32* numberOfFiles, |
||
| 988 | __out_ecount_opt(*numberOfFiles) IDWriteFontFile** fontFiles |
||
| 989 | ) PURE; |
||
| 990 | |||
| 991 | /// <summary> |
||
| 992 | /// Obtains the zero-based index of the font face in its font file or files. If the font files contain a single face, |
||
| 993 | /// the return value is zero. |
||
| 994 | /// </summary> |
||
| 995 | STDMETHOD_(UINT32, GetIndex)() PURE; |
||
| 996 | |||
| 997 | /// <summary> |
||
| 998 | /// Obtains the algorithmic style simulation flags of a font face. |
||
| 999 | /// </summary> |
||
| 1000 | STDMETHOD_(DWRITE_FONT_SIMULATIONS, GetSimulations)() PURE; |
||
| 1001 | |||
| 1002 | /// <summary> |
||
| 1003 | /// Determines whether the font is a symbol font. |
||
| 1004 | /// </summary> |
||
| 1005 | STDMETHOD_(BOOL, IsSymbolFont)() PURE; |
||
| 1006 | |||
| 1007 | /// <summary> |
||
| 1008 | /// Obtains design units and common metrics for the font face. |
||
| 1009 | /// These metrics are applicable to all the glyphs within a fontface and are used by applications for layout calculations. |
||
| 1010 | /// </summary> |
||
| 1011 | /// <param name="fontFaceMetrics">Points to a DWRITE_FONT_METRICS structure to fill in. |
||
| 1012 | /// The metrics returned by this function are in font design units.</param> |
||
| 1013 | STDMETHOD_(void, GetMetrics)( |
||
| 1014 | __out DWRITE_FONT_METRICS* fontFaceMetrics |
||
| 1015 | ) PURE; |
||
| 1016 | |||
| 1017 | /// <summary> |
||
| 1018 | /// Obtains the number of glyphs in the font face. |
||
| 1019 | /// </summary> |
||
| 1020 | STDMETHOD_(UINT16, GetGlyphCount)() PURE; |
||
| 1021 | |||
| 1022 | /// <summary> |
||
| 1023 | /// Obtains ideal glyph metrics in font design units. Design glyphs metrics are used for glyph positioning. |
||
| 1024 | /// </summary> |
||
| 1025 | /// <param name="glyphIndices">An array of glyph indices to compute the metrics for.</param> |
||
| 1026 | /// <param name="glyphCount">The number of elements in the glyphIndices array.</param> |
||
| 1027 | /// <param name="glyphMetrics">Array of DWRITE_GLYPH_METRICS structures filled by this function. |
||
| 1028 | /// The metrics returned by this function are in font design units.</param> |
||
| 1029 | /// <param name="isSideways">Indicates whether the font is being used in a sideways run. |
||
| 1030 | /// This can affect the glyph metrics if the font has oblique simulation |
||
| 1031 | /// because sideways oblique simulation differs from non-sideways oblique simulation.</param> |
||
| 1032 | /// <returns> |
||
| 1033 | /// Standard HRESULT error code. If any of the input glyph indices are outside of the valid glyph index range |
||
| 1034 | /// for the current font face, E_INVALIDARG will be returned. |
||
| 1035 | /// </returns> |
||
| 1036 | STDMETHOD(GetDesignGlyphMetrics)( |
||
| 1037 | __in_ecount(glyphCount) UINT16 const* glyphIndices, |
||
| 1038 | UINT32 glyphCount, |
||
| 1039 | __out_ecount(glyphCount) DWRITE_GLYPH_METRICS* glyphMetrics, |
||
| 1040 | BOOL isSideways = FALSE |
||
| 1041 | ) PURE; |
||
| 1042 | |||
| 1043 | /// <summary> |
||
| 1044 | /// Returns the nominal mapping of UCS4 Unicode code points to glyph indices as defined by the font 'CMAP' table. |
||
| 1045 | /// Note that this mapping is primarily provided for line layout engines built on top of the physical font API. |
||
| 1046 | /// Because of OpenType glyph substitution and line layout character substitution, the nominal conversion does not always correspond |
||
| 1047 | /// to how a Unicode string will map to glyph indices when rendering using a particular font face. |
||
| 1048 | /// Also, note that Unicode Variant Selectors provide for alternate mappings for character to glyph. |
||
| 1049 | /// This call will always return the default variant. |
||
| 1050 | /// </summary> |
||
| 1051 | /// <param name="codePoints">An array of USC4 code points to obtain nominal glyph indices from.</param> |
||
| 1052 | /// <param name="codePointCount">The number of elements in the codePoints array.</param> |
||
| 1053 | /// <param name="glyphIndices">Array of nominal glyph indices filled by this function.</param> |
||
| 1054 | /// <returns> |
||
| 1055 | /// Standard HRESULT error code. |
||
| 1056 | /// </returns> |
||
| 1057 | STDMETHOD(GetGlyphIndices)( |
||
| 1058 | __in_ecount(codePointCount) UINT32 const* codePoints, |
||
| 1059 | UINT32 codePointCount, |
||
| 1060 | __out_ecount(codePointCount) UINT16* glyphIndices |
||
| 1061 | ) PURE; |
||
| 1062 | |||
| 1063 | /// <summary> |
||
| 1064 | /// Finds the specified OpenType font table if it exists and returns a pointer to it. |
||
| 1065 | /// The function accesses the underling font data via the IDWriteFontStream interface |
||
| 1066 | /// implemented by the font file loader. |
||
| 1067 | /// </summary> |
||
| 1068 | /// <param name="openTypeTableTag">Four character tag of table to find. |
||
| 1069 | /// Use the DWRITE_MAKE_OPENTYPE_TAG() macro to create it. |
||
| 1070 | /// Unlike GDI, it does not support the special TTCF and null tags to access the whole font.</param> |
||
| 1071 | /// <param name="tableData"> |
||
| 1072 | /// Pointer to base of table in memory. |
||
| 1073 | /// The pointer is only valid so long as the FontFace used to get the font table still exists |
||
| 1074 | /// (not any other FontFace, even if it actually refers to the same physical font). |
||
| 1075 | /// </param> |
||
| 1076 | /// <param name="tableSize">Byte size of table.</param> |
||
| 1077 | /// <param name="tableContext"> |
||
| 1078 | /// Opaque context which must be freed by calling ReleaseFontTable. |
||
| 1079 | /// The context actually comes from the lower level IDWriteFontFileStream, |
||
| 1080 | /// which may be implemented by the application or DWrite itself. |
||
| 1081 | /// It is possible for a NULL tableContext to be returned, especially if |
||
| 1082 | /// the implementation directly memory maps the whole file. |
||
| 1083 | /// Nevertheless, always release it later, and do not use it as a test for function success. |
||
| 1084 | /// The same table can be queried multiple times, |
||
| 1085 | /// but each returned context can be different, so release each separately. |
||
| 1086 | /// </param> |
||
| 1087 | /// <param name="exists">True if table exists.</param> |
||
| 1088 | /// <returns> |
||
| 1089 | /// Standard HRESULT error code. |
||
| 1090 | /// If a table can not be found, the function will not return an error, but the size will be 0, table NULL, and exists = FALSE. |
||
| 1091 | /// The context does not need to be freed if the table was not found. |
||
| 1092 | /// </returns> |
||
| 1093 | /// <remarks> |
||
| 1094 | /// The context for the same tag may be different for each call, |
||
| 1095 | /// so each one must be held and released separately. |
||
| 1096 | /// </remarks> |
||
| 1097 | STDMETHOD(TryGetFontTable)( |
||
| 1098 | __in UINT32 openTypeTableTag, |
||
| 1099 | __deref_out_bcount(*tableSize) const void** tableData, |
||
| 1100 | __out UINT32* tableSize, |
||
| 1101 | __out void** tableContext, |
||
| 1102 | __out BOOL* exists |
||
| 1103 | ) PURE; |
||
| 1104 | |||
| 1105 | /// <summary> |
||
| 1106 | /// Releases the table obtained earlier from TryGetFontTable. |
||
| 1107 | /// </summary> |
||
| 1108 | /// <param name="tableContext">Opaque context from TryGetFontTable.</param> |
||
| 1109 | /// <returns> |
||
| 1110 | /// Standard HRESULT error code. |
||
| 1111 | /// </returns> |
||
| 1112 | STDMETHOD_(void, ReleaseFontTable)( |
||
| 1113 | __in void* tableContext |
||
| 1114 | ) PURE; |
||
| 1115 | |||
| 1116 | /// <summary> |
||
| 1117 | /// Computes the outline of a run of glyphs by calling back to the outline sink interface. |
||
| 1118 | /// </summary> |
||
| 1119 | /// <param name="emSize">Logical size of the font in DIP units. A DIP ("device-independent pixel") equals 1/96 inch.</param> |
||
| 1120 | /// <param name="glyphIndices">Array of glyph indices.</param> |
||
| 1121 | /// <param name="glyphAdvances">Optional array of glyph advances in DIPs.</param> |
||
| 1122 | /// <param name="glyphOffsets">Optional array of glyph offsets.</param> |
||
| 1123 | /// <param name="glyphCount">Number of glyphs.</param> |
||
| 1124 | /// <param name="isSideways">If true, specifies that glyphs are rotated 90 degrees to the left and vertical metrics are used. |
||
| 1125 | /// A client can render a vertical run by specifying isSideways = true and rotating the resulting geometry 90 degrees to the |
||
| 1126 | /// right using a transform. The isSideways and isRightToLeft parameters cannot both be true.</param> |
||
| 1127 | /// <param name="isRightToLeft">If true, specifies that the advance direction is right to left. By default, the advance direction |
||
| 1128 | /// is left to right.</param> |
||
| 1129 | /// <param name="geometrySink">Interface the function calls back to draw each element of the geometry.</param> |
||
| 1130 | /// <returns> |
||
| 1131 | /// Standard HRESULT error code. |
||
| 1132 | /// </returns> |
||
| 1133 | STDMETHOD(GetGlyphRunOutline)( |
||
| 1134 | FLOAT emSize, |
||
| 1135 | __in_ecount(glyphCount) UINT16 const* glyphIndices, |
||
| 1136 | __in_ecount_opt(glyphCount) FLOAT const* glyphAdvances, |
||
| 1137 | __in_ecount_opt(glyphCount) DWRITE_GLYPH_OFFSET const* glyphOffsets, |
||
| 1138 | UINT32 glyphCount, |
||
| 1139 | BOOL isSideways, |
||
| 1140 | BOOL isRightToLeft, |
||
| 1141 | IDWriteGeometrySink* geometrySink |
||
| 1142 | ) PURE; |
||
| 1143 | |||
| 1144 | /// <summary> |
||
| 1145 | /// Determines the recommended rendering mode for the font given the specified size and rendering parameters. |
||
| 1146 | /// </summary> |
||
| 1147 | /// <param name="emSize">Logical size of the font in DIP units. A DIP ("device-independent pixel") equals 1/96 inch.</param> |
||
| 1148 | /// <param name="pixelsPerDip">Number of physical pixels per DIP. For example, if the DPI of the rendering surface is 96 this |
||
| 1149 | /// value is 1.0f. If the DPI is 120, this value is 120.0f/96.</param> |
||
| 1150 | /// <param name="measuringMode">Specifies measuring method that will be used for glyphs in the font. |
||
| 1151 | /// Renderer implementations may choose different rendering modes for given measuring methods, but |
||
| 1152 | /// best results are seen when the corresponding modes match: |
||
| 1153 | /// DWRITE_RENDERING_MODE_CLEARTYPE_NATURAL for DWRITE_MEASURING_MODE_NATURAL |
||
| 1154 | /// DWRITE_RENDERING_MODE_CLEARTYPE_GDI_CLASSIC for DWRITE_MEASURING_MODE_GDI_CLASSIC |
||
| 1155 | /// DWRITE_RENDERING_MODE_CLEARTYPE_GDI_NATURAL for DWRITE_MEASURING_MODE_GDI_NATURAL |
||
| 1156 | /// </param> |
||
| 1157 | /// <param name="renderingParams">Rendering parameters object. This parameter is necessary in case the rendering parameters |
||
| 1158 | /// object overrides the rendering mode.</param> |
||
| 1159 | /// <param name="renderingMode">Receives the recommended rendering mode to use.</param> |
||
| 1160 | /// <returns> |
||
| 1161 | /// Standard HRESULT error code. |
||
| 1162 | /// </returns> |
||
| 1163 | STDMETHOD(GetRecommendedRenderingMode)( |
||
| 1164 | FLOAT emSize, |
||
| 1165 | FLOAT pixelsPerDip, |
||
| 1166 | DWRITE_MEASURING_MODE measuringMode, |
||
| 1167 | IDWriteRenderingParams* renderingParams, |
||
| 1168 | __out DWRITE_RENDERING_MODE* renderingMode |
||
| 1169 | ) PURE; |
||
| 1170 | |||
| 1171 | /// <summary> |
||
| 1172 | /// Obtains design units and common metrics for the font face. |
||
| 1173 | /// These metrics are applicable to all the glyphs within a fontface and are used by applications for layout calculations. |
||
| 1174 | /// </summary> |
||
| 1175 | /// <param name="emSize">Logical size of the font in DIP units. A DIP ("device-independent pixel") equals 1/96 inch.</param> |
||
| 1176 | /// <param name="pixelsPerDip">Number of physical pixels per DIP. For example, if the DPI of the rendering surface is 96 this |
||
| 1177 | /// value is 1.0f. If the DPI is 120, this value is 120.0f/96.</param> |
||
| 1178 | /// <param name="transform">Optional transform applied to the glyphs and their positions. This transform is applied after the |
||
| 1179 | /// scaling specified by the font size and pixelsPerDip.</param> |
||
| 1180 | /// <param name="fontFaceMetrics">Points to a DWRITE_FONT_METRICS structure to fill in. |
||
| 1181 | /// The metrics returned by this function are in font design units.</param> |
||
| 1182 | STDMETHOD(GetGdiCompatibleMetrics)( |
||
| 1183 | FLOAT emSize, |
||
| 1184 | FLOAT pixelsPerDip, |
||
| 1185 | __in_opt DWRITE_MATRIX const* transform, |
||
| 1186 | __out DWRITE_FONT_METRICS* fontFaceMetrics |
||
| 1187 | ) PURE; |
||
| 1188 | |||
| 1189 | |||
| 1190 | /// <summary> |
||
| 1191 | /// Obtains glyph metrics in font design units with the return values compatible with what GDI would produce. |
||
| 1192 | /// Glyphs metrics are used for positioning of individual glyphs. |
||
| 1193 | /// </summary> |
||
| 1194 | /// <param name="emSize">Logical size of the font in DIP units. A DIP ("device-independent pixel") equals 1/96 inch.</param> |
||
| 1195 | /// <param name="pixelsPerDip">Number of physical pixels per DIP. For example, if the DPI of the rendering surface is 96 this |
||
| 1196 | /// value is 1.0f. If the DPI is 120, this value is 120.0f/96.</param> |
||
| 1197 | /// <param name="transform">Optional transform applied to the glyphs and their positions. This transform is applied after the |
||
| 1198 | /// scaling specified by the font size and pixelsPerDip.</param> |
||
| 1199 | /// <param name="useGdiNatural"> |
||
| 1200 | /// When set to FALSE, the metrics are the same as the metrics of GDI aliased text. |
||
| 1201 | /// When set to TRUE, the metrics are the same as the metrics of text measured by GDI using a font |
||
| 1202 | /// created with CLEARTYPE_NATURAL_QUALITY. |
||
| 1203 | /// </param> |
||
| 1204 | /// <param name="glyphIndices">An array of glyph indices to compute the metrics for.</param> |
||
| 1205 | /// <param name="glyphCount">The number of elements in the glyphIndices array.</param> |
||
| 1206 | /// <param name="glyphMetrics">Array of DWRITE_GLYPH_METRICS structures filled by this function. |
||
| 1207 | /// The metrics returned by this function are in font design units.</param> |
||
| 1208 | /// <param name="isSideways">Indicates whether the font is being used in a sideways run. |
||
| 1209 | /// This can affect the glyph metrics if the font has oblique simulation |
||
| 1210 | /// because sideways oblique simulation differs from non-sideways oblique simulation.</param> |
||
| 1211 | /// <returns> |
||
| 1212 | /// Standard HRESULT error code. If any of the input glyph indices are outside of the valid glyph index range |
||
| 1213 | /// for the current font face, E_INVALIDARG will be returned. |
||
| 1214 | /// </returns> |
||
| 1215 | STDMETHOD(GetGdiCompatibleGlyphMetrics)( |
||
| 1216 | FLOAT emSize, |
||
| 1217 | FLOAT pixelsPerDip, |
||
| 1218 | __in_opt DWRITE_MATRIX const* transform, |
||
| 1219 | BOOL useGdiNatural, |
||
| 1220 | __in_ecount(glyphCount) UINT16 const* glyphIndices, |
||
| 1221 | UINT32 glyphCount, |
||
| 1222 | __out_ecount(glyphCount) DWRITE_GLYPH_METRICS* glyphMetrics, |
||
| 1223 | BOOL isSideways = FALSE |
||
| 1224 | ) PURE; |
||
| 1225 | }; |
||
| 1226 | |||
| 1227 | interface IDWriteFactory; |
||
| 1228 | interface IDWriteFontFileEnumerator; |
||
| 1229 | |||
| 1230 | /// <summary> |
||
| 1231 | /// The font collection loader interface is used to construct a collection of fonts given a particular type of key. |
||
| 1232 | /// The font collection loader interface is recommended to be implemented by a singleton object. |
||
| 1233 | /// IMPORTANT: font collection loader implementations must not register themselves with a DirectWrite factory |
||
| 1234 | /// inside their constructors and must not unregister themselves in their destructors, because |
||
| 1235 | /// registration and unregistraton operations increment and decrement the object reference count respectively. |
||
| 1236 | /// Instead, registration and unregistration of font file loaders with DirectWrite factory should be performed |
||
| 1237 | /// outside of the font file loader implementation as a separate step. |
||
| 1238 | /// </summary> |
||
| 1239 | interface DWRITE_DECLARE_INTERFACE("cca920e4-52f0-492b-bfa8-29c72ee0a468") IDWriteFontCollectionLoader : public IUnknown |
||
| 1240 | { |
||
| 1241 | /// <summary> |
||
| 1242 | /// Creates a font file enumerator object that encapsulates a collection of font files. |
||
| 1243 | /// The font system calls back to this interface to create a font collection. |
||
| 1244 | /// </summary> |
||
| 1245 | /// <param name="factory">Factory associated with the loader.</param> |
||
| 1246 | /// <param name="collectionKey">Font collection key that uniquely identifies the collection of font files within |
||
| 1247 | /// the scope of the font collection loader being used.</param> |
||
| 1248 | /// <param name="collectionKeySize">Size of the font collection key in bytes.</param> |
||
| 1249 | /// <param name="fontFileEnumerator">Pointer to the newly created font file enumerator.</param> |
||
| 1250 | /// <returns> |
||
| 1251 | /// Standard HRESULT error code. |
||
| 1252 | /// </returns> |
||
| 1253 | STDMETHOD(CreateEnumeratorFromKey)( |
||
| 1254 | IDWriteFactory* factory, |
||
| 1255 | __in_bcount(collectionKeySize) void const* collectionKey, |
||
| 1256 | UINT32 collectionKeySize, |
||
| 1257 | __out IDWriteFontFileEnumerator** fontFileEnumerator |
||
| 1258 | ) PURE; |
||
| 1259 | }; |
||
| 1260 | |||
| 1261 | /// <summary> |
||
| 1262 | /// The font file enumerator interface encapsulates a collection of font files. The font system uses this interface |
||
| 1263 | /// to enumerate font files when building a font collection. |
||
| 1264 | /// </summary> |
||
| 1265 | interface DWRITE_DECLARE_INTERFACE("72755049-5ff7-435d-8348-4be97cfa6c7c") IDWriteFontFileEnumerator : public IUnknown |
||
| 1266 | { |
||
| 1267 | /// <summary> |
||
| 1268 | /// Advances to the next font file in the collection. When it is first created, the enumerator is positioned |
||
| 1269 | /// before the first element of the collection and the first call to MoveNext advances to the first file. |
||
| 1270 | /// </summary> |
||
| 1271 | /// <param name="hasCurrentFile">Receives the value TRUE if the enumerator advances to a file, or FALSE if |
||
| 1272 | /// the enumerator advanced past the last file in the collection.</param> |
||
| 1273 | /// <returns> |
||
| 1274 | /// Standard HRESULT error code. |
||
| 1275 | /// </returns> |
||
| 1276 | STDMETHOD(MoveNext)( |
||
| 1277 | __out BOOL* hasCurrentFile |
||
| 1278 | ) PURE; |
||
| 1279 | |||
| 1280 | /// <summary> |
||
| 1281 | /// Gets a reference to the current font file. |
||
| 1282 | /// </summary> |
||
| 1283 | /// <param name="fontFile">Pointer to the newly created font file object.</param> |
||
| 1284 | /// <returns> |
||
| 1285 | /// Standard HRESULT error code. |
||
| 1286 | /// </returns> |
||
| 1287 | STDMETHOD(GetCurrentFontFile)( |
||
| 1288 | __out IDWriteFontFile** fontFile |
||
| 1289 | ) PURE; |
||
| 1290 | }; |
||
| 1291 | |||
| 1292 | /// <summary> |
||
| 1293 | /// Represents a collection of strings indexed by locale name. |
||
| 1294 | /// </summary> |
||
| 1295 | interface DWRITE_DECLARE_INTERFACE("08256209-099a-4b34-b86d-c22b110e7771") IDWriteLocalizedStrings : public IUnknown |
||
| 1296 | { |
||
| 1297 | /// <summary> |
||
| 1298 | /// Gets the number of language/string pairs. |
||
| 1299 | /// </summary> |
||
| 1300 | STDMETHOD_(UINT32, GetCount)() PURE; |
||
| 1301 | |||
| 1302 | /// <summary> |
||
| 1303 | /// Gets the index of the item with the specified locale name. |
||
| 1304 | /// </summary> |
||
| 1305 | /// <param name="localeName">Locale name to look for.</param> |
||
| 1306 | /// <param name="index">Receives the zero-based index of the locale name/string pair.</param> |
||
| 1307 | /// <param name="exists">Receives TRUE if the locale name exists or FALSE if not.</param> |
||
| 1308 | /// <returns> |
||
| 1309 | /// Standard HRESULT error code. If the specified locale name does not exist, the return value is S_OK, |
||
| 1310 | /// but *index is UINT_MAX and *exists is FALSE. |
||
| 1311 | /// </returns> |
||
| 1312 | STDMETHOD(FindLocaleName)( |
||
| 1313 | __in_z WCHAR const* localeName, |
||
| 1314 | __out UINT32* index, |
||
| 1315 | __out BOOL* exists |
||
| 1316 | ) PURE; |
||
| 1317 | |||
| 1318 | /// <summary> |
||
| 1319 | /// Gets the length in characters (not including the null terminator) of the locale name with the specified index. |
||
| 1320 | /// </summary> |
||
| 1321 | /// <param name="index">Zero-based index of the locale name.</param> |
||
| 1322 | /// <param name="length">Receives the length in characters, not including the null terminator.</param> |
||
| 1323 | /// <returns> |
||
| 1324 | /// Standard HRESULT error code. |
||
| 1325 | /// </returns> |
||
| 1326 | STDMETHOD(GetLocaleNameLength)( |
||
| 1327 | UINT32 index, |
||
| 1328 | __out UINT32* length |
||
| 1329 | ) PURE; |
||
| 1330 | |||
| 1331 | /// <summary> |
||
| 1332 | /// Copies the locale name with the specified index to the specified array. |
||
| 1333 | /// </summary> |
||
| 1334 | /// <param name="index">Zero-based index of the locale name.</param> |
||
| 1335 | /// <param name="localeName">Character array that receives the locale name.</param> |
||
| 1336 | /// <param name="size">Size of the array in characters. The size must include space for the terminating |
||
| 1337 | /// null character.</param> |
||
| 1338 | /// <returns> |
||
| 1339 | /// Standard HRESULT error code. |
||
| 1340 | /// </returns> |
||
| 1341 | STDMETHOD(GetLocaleName)( |
||
| 1342 | UINT32 index, |
||
| 1343 | __out_ecount_z(size) WCHAR* localeName, |
||
| 1344 | UINT32 size |
||
| 1345 | ) PURE; |
||
| 1346 | |||
| 1347 | /// <summary> |
||
| 1348 | /// Gets the length in characters (not including the null terminator) of the string with the specified index. |
||
| 1349 | /// </summary> |
||
| 1350 | /// <param name="index">Zero-based index of the string.</param> |
||
| 1351 | /// <param name="length">Receives the length in characters, not including the null terminator.</param> |
||
| 1352 | /// <returns> |
||
| 1353 | /// Standard HRESULT error code. |
||
| 1354 | /// </returns> |
||
| 1355 | STDMETHOD(GetStringLength)( |
||
| 1356 | UINT32 index, |
||
| 1357 | __out UINT32* length |
||
| 1358 | ) PURE; |
||
| 1359 | |||
| 1360 | /// <summary> |
||
| 1361 | /// Copies the string with the specified index to the specified array. |
||
| 1362 | /// </summary> |
||
| 1363 | /// <param name="index">Zero-based index of the string.</param> |
||
| 1364 | /// <param name="stringBuffer">Character array that receives the string.</param> |
||
| 1365 | /// <param name="size">Size of the array in characters. The size must include space for the terminating |
||
| 1366 | /// null character.</param> |
||
| 1367 | /// <returns> |
||
| 1368 | /// Standard HRESULT error code. |
||
| 1369 | /// </returns> |
||
| 1370 | STDMETHOD(GetString)( |
||
| 1371 | UINT32 index, |
||
| 1372 | __out_ecount_z(size) WCHAR* stringBuffer, |
||
| 1373 | UINT32 size |
||
| 1374 | ) PURE; |
||
| 1375 | }; |
||
| 1376 | |||
| 1377 | interface IDWriteFontFamily; |
||
| 1378 | interface IDWriteFont; |
||
| 1379 | |||
| 1380 | /// <summary> |
||
| 1381 | /// The IDWriteFontCollection encapsulates a collection of fonts. |
||
| 1382 | /// </summary> |
||
| 1383 | interface DWRITE_DECLARE_INTERFACE("a84cee02-3eea-4eee-a827-87c1a02a0fcc") IDWriteFontCollection : public IUnknown |
||
| 1384 | { |
||
| 1385 | /// <summary> |
||
| 1386 | /// Gets the number of font families in the collection. |
||
| 1387 | /// </summary> |
||
| 1388 | STDMETHOD_(UINT32, GetFontFamilyCount)() PURE; |
||
| 1389 | |||
| 1390 | /// <summary> |
||
| 1391 | /// Creates a font family object given a zero-based font family index. |
||
| 1392 | /// </summary> |
||
| 1393 | /// <param name="index">Zero-based index of the font family.</param> |
||
| 1394 | /// <param name="fontFamily">Receives a pointer the newly created font family object.</param> |
||
| 1395 | /// <returns> |
||
| 1396 | /// Standard HRESULT error code. |
||
| 1397 | /// </returns> |
||
| 1398 | STDMETHOD(GetFontFamily)( |
||
| 1399 | UINT32 index, |
||
| 1400 | __out IDWriteFontFamily** fontFamily |
||
| 1401 | ) PURE; |
||
| 1402 | |||
| 1403 | /// <summary> |
||
| 1404 | /// Finds the font family with the specified family name. |
||
| 1405 | /// </summary> |
||
| 1406 | /// <param name="familyName">Name of the font family. The name is not case-sensitive but must otherwise exactly match a family name in the collection.</param> |
||
| 1407 | /// <param name="index">Receives the zero-based index of the matching font family if the family name was found or UINT_MAX otherwise.</param> |
||
| 1408 | /// <param name="exists">Receives TRUE if the family name exists or FALSE otherwise.</param> |
||
| 1409 | /// <returns> |
||
| 1410 | /// Standard HRESULT error code. If the specified family name does not exist, the return value is S_OK, but *index is UINT_MAX and *exists is FALSE. |
||
| 1411 | /// </returns> |
||
| 1412 | STDMETHOD(FindFamilyName)( |
||
| 1413 | __in_z WCHAR const* familyName, |
||
| 1414 | __out UINT32* index, |
||
| 1415 | __out BOOL* exists |
||
| 1416 | ) PURE; |
||
| 1417 | |||
| 1418 | /// <summary> |
||
| 1419 | /// Gets the font object that corresponds to the same physical font as the specified font face object. The specified physical font must belong |
||
| 1420 | /// to the font collection. |
||
| 1421 | /// </summary> |
||
| 1422 | /// <param name="fontFace">Font face object that specifies the physical font.</param> |
||
| 1423 | /// <param name="font">Receives a pointer to the newly created font object if successful or NULL otherwise.</param> |
||
| 1424 | /// <returns> |
||
| 1425 | /// Standard HRESULT error code. If the specified physical font is not part of the font collection the return value is DWRITE_E_NOFONT. |
||
| 1426 | /// </returns> |
||
| 1427 | STDMETHOD(GetFontFromFontFace)( |
||
| 1428 | IDWriteFontFace* fontFace, |
||
| 1429 | __out IDWriteFont** font |
||
| 1430 | ) PURE; |
||
| 1431 | }; |
||
| 1432 | |||
| 1433 | /// <summary> |
||
| 1434 | /// The IDWriteFontList interface represents a list of fonts. |
||
| 1435 | /// </summary> |
||
| 1436 | interface DWRITE_DECLARE_INTERFACE("1a0d8438-1d97-4ec1-aef9-a2fb86ed6acb") IDWriteFontList : public IUnknown |
||
| 1437 | { |
||
| 1438 | /// <summary> |
||
| 1439 | /// Gets the font collection that contains the fonts. |
||
| 1440 | /// </summary> |
||
| 1441 | /// <param name="fontCollection">Receives a pointer to the font collection object.</param> |
||
| 1442 | /// <returns> |
||
| 1443 | /// Standard HRESULT error code. |
||
| 1444 | /// </returns> |
||
| 1445 | STDMETHOD(GetFontCollection)( |
||
| 1446 | __out IDWriteFontCollection** fontCollection |
||
| 1447 | ) PURE; |
||
| 1448 | |||
| 1449 | /// <summary> |
||
| 1450 | /// Gets the number of fonts in the font list. |
||
| 1451 | /// </summary> |
||
| 1452 | STDMETHOD_(UINT32, GetFontCount)() PURE; |
||
| 1453 | |||
| 1454 | /// <summary> |
||
| 1455 | /// Gets a font given its zero-based index. |
||
| 1456 | /// </summary> |
||
| 1457 | /// <param name="index">Zero-based index of the font in the font list.</param> |
||
| 1458 | /// <param name="font">Receives a pointer to the newly created font object.</param> |
||
| 1459 | /// <returns> |
||
| 1460 | /// Standard HRESULT error code. |
||
| 1461 | /// </returns> |
||
| 1462 | STDMETHOD(GetFont)( |
||
| 1463 | UINT32 index, |
||
| 1464 | __out IDWriteFont** font |
||
| 1465 | ) PURE; |
||
| 1466 | }; |
||
| 1467 | |||
| 1468 | /// <summary> |
||
| 1469 | /// The IDWriteFontFamily interface represents a set of fonts that share the same design but are differentiated |
||
| 1470 | /// by weight, stretch, and style. |
||
| 1471 | /// </summary> |
||
| 1472 | interface DWRITE_DECLARE_INTERFACE("da20d8ef-812a-4c43-9802-62ec4abd7add") IDWriteFontFamily : public IDWriteFontList |
||
| 1473 | { |
||
| 1474 | /// <summary> |
||
| 1475 | /// Creates an localized strings object that contains the family names for the font family, indexed by locale name. |
||
| 1476 | /// </summary> |
||
| 1477 | /// <param name="names">Receives a pointer to the newly created localized strings object.</param> |
||
| 1478 | /// <returns> |
||
| 1479 | /// Standard HRESULT error code. |
||
| 1480 | /// </returns> |
||
| 1481 | STDMETHOD(GetFamilyNames)( |
||
| 1482 | __out IDWriteLocalizedStrings** names |
||
| 1483 | ) PURE; |
||
| 1484 | |||
| 1485 | /// <summary> |
||
| 1486 | /// Gets the font that best matches the specified properties. |
||
| 1487 | /// </summary> |
||
| 1488 | /// <param name="weight">Requested font weight.</param> |
||
| 1489 | /// <param name="stretch">Requested font stretch.</param> |
||
| 1490 | /// <param name="style">Requested font style.</param> |
||
| 1491 | /// <param name="matchingFont">Receives a pointer to the newly created font object.</param> |
||
| 1492 | /// <returns> |
||
| 1493 | /// Standard HRESULT error code. |
||
| 1494 | /// </returns> |
||
| 1495 | STDMETHOD(GetFirstMatchingFont)( |
||
| 1496 | DWRITE_FONT_WEIGHT weight, |
||
| 1497 | DWRITE_FONT_STRETCH stretch, |
||
| 1498 | DWRITE_FONT_STYLE style, |
||
| 1499 | __out IDWriteFont** matchingFont |
||
| 1500 | ) PURE; |
||
| 1501 | |||
| 1502 | /// <summary> |
||
| 1503 | /// Gets a list of fonts in the font family ranked in order of how well they match the specified properties. |
||
| 1504 | /// </summary> |
||
| 1505 | /// <param name="weight">Requested font weight.</param> |
||
| 1506 | /// <param name="stretch">Requested font stretch.</param> |
||
| 1507 | /// <param name="style">Requested font style.</param> |
||
| 1508 | /// <param name="matchingFonts">Receives a pointer to the newly created font list object.</param> |
||
| 1509 | /// <returns> |
||
| 1510 | /// Standard HRESULT error code. |
||
| 1511 | /// </returns> |
||
| 1512 | STDMETHOD(GetMatchingFonts)( |
||
| 1513 | DWRITE_FONT_WEIGHT weight, |
||
| 1514 | DWRITE_FONT_STRETCH stretch, |
||
| 1515 | DWRITE_FONT_STYLE style, |
||
| 1516 | __out IDWriteFontList** matchingFonts |
||
| 1517 | ) PURE; |
||
| 1518 | }; |
||
| 1519 | |||
| 1520 | /// <summary> |
||
| 1521 | /// The IDWriteFont interface represents a physical font in a font collection. |
||
| 1522 | /// </summary> |
||
| 1523 | interface DWRITE_DECLARE_INTERFACE("acd16696-8c14-4f5d-877e-fe3fc1d32737") IDWriteFont : public IUnknown |
||
| 1524 | { |
||
| 1525 | /// <summary> |
||
| 1526 | /// Gets the font family to which the specified font belongs. |
||
| 1527 | /// </summary> |
||
| 1528 | /// <param name="fontFamily">Receives a pointer to the font family object.</param> |
||
| 1529 | /// <returns> |
||
| 1530 | /// Standard HRESULT error code. |
||
| 1531 | /// </returns> |
||
| 1532 | STDMETHOD(GetFontFamily)( |
||
| 1533 | __out IDWriteFontFamily** fontFamily |
||
| 1534 | ) PURE; |
||
| 1535 | |||
| 1536 | /// <summary> |
||
| 1537 | /// Gets the weight of the specified font. |
||
| 1538 | /// </summary> |
||
| 1539 | STDMETHOD_(DWRITE_FONT_WEIGHT, GetWeight)() PURE; |
||
| 1540 | |||
| 1541 | /// <summary> |
||
| 1542 | /// Gets the stretch (aka. width) of the specified font. |
||
| 1543 | /// </summary> |
||
| 1544 | STDMETHOD_(DWRITE_FONT_STRETCH, GetStretch)() PURE; |
||
| 1545 | |||
| 1546 | /// <summary> |
||
| 1547 | /// Gets the style (aka. slope) of the specified font. |
||
| 1548 | /// </summary> |
||
| 1549 | STDMETHOD_(DWRITE_FONT_STYLE, GetStyle)() PURE; |
||
| 1550 | |||
| 1551 | /// <summary> |
||
| 1552 | /// Returns TRUE if the font is a symbol font or FALSE if not. |
||
| 1553 | /// </summary> |
||
| 1554 | STDMETHOD_(BOOL, IsSymbolFont)() PURE; |
||
| 1555 | |||
| 1556 | /// <summary> |
||
| 1557 | /// Gets a localized strings collection containing the face names for the font (e.g., Regular or Bold), indexed by locale name. |
||
| 1558 | /// </summary> |
||
| 1559 | /// <param name="names">Receives a pointer to the newly created localized strings object.</param> |
||
| 1560 | /// <returns> |
||
| 1561 | /// Standard HRESULT error code. |
||
| 1562 | /// </returns> |
||
| 1563 | STDMETHOD(GetFaceNames)( |
||
| 1564 | __out IDWriteLocalizedStrings** names |
||
| 1565 | ) PURE; |
||
| 1566 | |||
| 1567 | /// <summary> |
||
| 1568 | /// Gets a localized strings collection containing the specified informational strings, indexed by locale name. |
||
| 1569 | /// </summary> |
||
| 1570 | /// <param name="informationalStringID">Identifies the string to get.</param> |
||
| 1571 | /// <param name="informationalStrings">Receives a pointer to the newly created localized strings object.</param> |
||
| 1572 | /// <param name="exists">Receives the value TRUE if the font contains the specified string ID or FALSE if not.</param> |
||
| 1573 | /// <returns> |
||
| 1574 | /// Standard HRESULT error code. If the font does not contain the specified string, the return value is S_OK but |
||
| 1575 | /// informationalStrings receives a NULL pointer and exists receives the value FALSE. |
||
| 1576 | /// </returns> |
||
| 1577 | STDMETHOD(GetInformationalStrings)( |
||
| 1578 | DWRITE_INFORMATIONAL_STRING_ID informationalStringID, |
||
| 1579 | __out IDWriteLocalizedStrings** informationalStrings, |
||
| 1580 | __out BOOL* exists |
||
| 1581 | ) PURE; |
||
| 1582 | |||
| 1583 | /// <summary> |
||
| 1584 | /// Gets a value that indicates what simulation are applied to the specified font. |
||
| 1585 | /// </summary> |
||
| 1586 | STDMETHOD_(DWRITE_FONT_SIMULATIONS, GetSimulations)() PURE; |
||
| 1587 | |||
| 1588 | /// <summary> |
||
| 1589 | /// Gets the metrics for the font. |
||
| 1590 | /// </summary> |
||
| 1591 | /// <param name="fontMetrics">Receives the font metrics.</param> |
||
| 1592 | STDMETHOD_(void, GetMetrics)( |
||
| 1593 | __out DWRITE_FONT_METRICS* fontMetrics |
||
| 1594 | ) PURE; |
||
| 1595 | |||
| 1596 | /// <summary> |
||
| 1597 | /// Determines whether the font supports the specified character. |
||
| 1598 | /// </summary> |
||
| 1599 | /// <param name="unicodeValue">Unicode (UCS-4) character value.</param> |
||
| 1600 | /// <param name="exists">Receives the value TRUE if the font supports the specified character or FALSE if not.</param> |
||
| 1601 | /// <returns> |
||
| 1602 | /// Standard HRESULT error code. |
||
| 1603 | /// </returns> |
||
| 1604 | STDMETHOD(HasCharacter)( |
||
| 1605 | UINT32 unicodeValue, |
||
| 1606 | __out BOOL* exists |
||
| 1607 | ) PURE; |
||
| 1608 | |||
| 1609 | /// <summary> |
||
| 1610 | /// Creates a font face object for the font. |
||
| 1611 | /// </summary> |
||
| 1612 | /// <param name="fontFace">Receives a pointer to the newly created font face object.</param> |
||
| 1613 | /// <returns> |
||
| 1614 | /// Standard HRESULT error code. |
||
| 1615 | /// </returns> |
||
| 1616 | STDMETHOD(CreateFontFace)( |
||
| 1617 | __out IDWriteFontFace** fontFace |
||
| 1618 | ) PURE; |
||
| 1619 | }; |
||
| 1620 | |||
| 1621 | /// <summary> |
||
| 1622 | /// Direction for how reading progresses. |
||
| 1623 | /// </summary> |
||
| 1624 | enum DWRITE_READING_DIRECTION |
||
| 1625 | { |
||
| 1626 | /// <summary> |
||
| 1627 | /// Reading progresses from left to right. |
||
| 1628 | /// </summary> |
||
| 1629 | DWRITE_READING_DIRECTION_LEFT_TO_RIGHT, |
||
| 1630 | |||
| 1631 | /// <summary> |
||
| 1632 | /// Reading progresses from right to left. |
||
| 1633 | /// </summary> |
||
| 1634 | DWRITE_READING_DIRECTION_RIGHT_TO_LEFT |
||
| 1635 | }; |
||
| 1636 | |||
| 1637 | /// <summary> |
||
| 1638 | /// Direction for how lines of text are placed relative to one another. |
||
| 1639 | /// </summary> |
||
| 1640 | enum DWRITE_FLOW_DIRECTION |
||
| 1641 | { |
||
| 1642 | /// <summary> |
||
| 1643 | /// Text lines are placed from top to bottom. |
||
| 1644 | /// </summary> |
||
| 1645 | DWRITE_FLOW_DIRECTION_TOP_TO_BOTTOM |
||
| 1646 | }; |
||
| 1647 | |||
| 1648 | /// <summary> |
||
| 1649 | /// Alignment of paragraph text along the reading direction axis relative to |
||
| 1650 | /// the leading and trailing edge of the layout box. |
||
| 1651 | /// </summary> |
||
| 1652 | enum DWRITE_TEXT_ALIGNMENT |
||
| 1653 | { |
||
| 1654 | /// <summary> |
||
| 1655 | /// The leading edge of the paragraph text is aligned to the layout box's leading edge. |
||
| 1656 | /// </summary> |
||
| 1657 | DWRITE_TEXT_ALIGNMENT_LEADING, |
||
| 1658 | |||
| 1659 | /// <summary> |
||
| 1660 | /// The trailing edge of the paragraph text is aligned to the layout box's trailing edge. |
||
| 1661 | /// </summary> |
||
| 1662 | DWRITE_TEXT_ALIGNMENT_TRAILING, |
||
| 1663 | |||
| 1664 | /// <summary> |
||
| 1665 | /// The center of the paragraph text is aligned to the center of the layout box. |
||
| 1666 | /// </summary> |
||
| 1667 | DWRITE_TEXT_ALIGNMENT_CENTER |
||
| 1668 | }; |
||
| 1669 | |||
| 1670 | /// <summary> |
||
| 1671 | /// Alignment of paragraph text along the flow direction axis relative to the |
||
| 1672 | /// flow's beginning and ending edge of the layout box. |
||
| 1673 | /// </summary> |
||
| 1674 | enum DWRITE_PARAGRAPH_ALIGNMENT |
||
| 1675 | { |
||
| 1676 | /// <summary> |
||
| 1677 | /// The first line of paragraph is aligned to the flow's beginning edge of the layout box. |
||
| 1678 | /// </summary> |
||
| 1679 | DWRITE_PARAGRAPH_ALIGNMENT_NEAR, |
||
| 1680 | |||
| 1681 | /// <summary> |
||
| 1682 | /// The last line of paragraph is aligned to the flow's ending edge of the layout box. |
||
| 1683 | /// </summary> |
||
| 1684 | DWRITE_PARAGRAPH_ALIGNMENT_FAR, |
||
| 1685 | |||
| 1686 | /// <summary> |
||
| 1687 | /// The center of the paragraph is aligned to the center of the flow of the layout box. |
||
| 1688 | /// </summary> |
||
| 1689 | DWRITE_PARAGRAPH_ALIGNMENT_CENTER |
||
| 1690 | }; |
||
| 1691 | |||
| 1692 | /// <summary> |
||
| 1693 | /// Word wrapping in multiline paragraph. |
||
| 1694 | /// </summary> |
||
| 1695 | enum DWRITE_WORD_WRAPPING |
||
| 1696 | { |
||
| 1697 | /// <summary> |
||
| 1698 | /// Words are broken across lines to avoid text overflowing the layout box. |
||
| 1699 | /// </summary> |
||
| 1700 | DWRITE_WORD_WRAPPING_WRAP, |
||
| 1701 | |||
| 1702 | /// <summary> |
||
| 1703 | /// Words are kept within the same line even when it overflows the layout box. |
||
| 1704 | /// This option is often used with scrolling to reveal overflow text. |
||
| 1705 | /// </summary> |
||
| 1706 | DWRITE_WORD_WRAPPING_NO_WRAP |
||
| 1707 | }; |
||
| 1708 | |||
| 1709 | /// <summary> |
||
| 1710 | /// The method used for line spacing in layout. |
||
| 1711 | /// </summary> |
||
| 1712 | enum DWRITE_LINE_SPACING_METHOD |
||
| 1713 | { |
||
| 1714 | /// <summary> |
||
| 1715 | /// Line spacing depends solely on the content, growing to accomodate the size of fonts and inline objects. |
||
| 1716 | /// </summary> |
||
| 1717 | DWRITE_LINE_SPACING_METHOD_DEFAULT, |
||
| 1718 | |||
| 1719 | /// <summary> |
||
| 1720 | /// Lines are explicitly set to uniform spacing, regardless of contained font sizes. |
||
| 1721 | /// This can be useful to avoid the uneven appearance that can occur from font fallback. |
||
| 1722 | /// </summary> |
||
| 1723 | DWRITE_LINE_SPACING_METHOD_UNIFORM |
||
| 1724 | }; |
||
| 1725 | |||
| 1726 | /// <summary> |
||
| 1727 | /// Text granularity used to trim text overflowing the layout box. |
||
| 1728 | /// </summary> |
||
| 1729 | enum DWRITE_TRIMMING_GRANULARITY |
||
| 1730 | { |
||
| 1731 | /// <summary> |
||
| 1732 | /// No trimming occurs. Text flows beyond the layout width. |
||
| 1733 | /// </summary> |
||
| 1734 | DWRITE_TRIMMING_GRANULARITY_NONE, |
||
| 1735 | |||
| 1736 | /// <summary> |
||
| 1737 | /// Trimming occurs at character cluster boundary. |
||
| 1738 | /// </summary> |
||
| 1739 | DWRITE_TRIMMING_GRANULARITY_CHARACTER, |
||
| 1740 | |||
| 1741 | /// <summary> |
||
| 1742 | /// Trimming occurs at word boundary. |
||
| 1743 | /// </summary> |
||
| 1744 | DWRITE_TRIMMING_GRANULARITY_WORD |
||
| 1745 | }; |
||
| 1746 | |||
| 1747 | /// <summary> |
||
| 1748 | /// Typographic feature of text supplied by the font. |
||
| 1749 | /// </summary> |
||
| 1750 | enum DWRITE_FONT_FEATURE_TAG |
||
| 1751 | { |
||
| 1752 | DWRITE_FONT_FEATURE_TAG_ALTERNATIVE_FRACTIONS = 0x63726661, // 'afrc' |
||
| 1753 | DWRITE_FONT_FEATURE_TAG_PETITE_CAPITALS_FROM_CAPITALS = 0x63703263, // 'c2pc' |
||
| 1754 | DWRITE_FONT_FEATURE_TAG_SMALL_CAPITALS_FROM_CAPITALS = 0x63733263, // 'c2sc' |
||
| 1755 | DWRITE_FONT_FEATURE_TAG_CONTEXTUAL_ALTERNATES = 0x746c6163, // 'calt' |
||
| 1756 | DWRITE_FONT_FEATURE_TAG_CASE_SENSITIVE_FORMS = 0x65736163, // 'case' |
||
| 1757 | DWRITE_FONT_FEATURE_TAG_GLYPH_COMPOSITION_DECOMPOSITION = 0x706d6363, // 'ccmp' |
||
| 1758 | DWRITE_FONT_FEATURE_TAG_CONTEXTUAL_LIGATURES = 0x67696c63, // 'clig' |
||
| 1759 | DWRITE_FONT_FEATURE_TAG_CAPITAL_SPACING = 0x70737063, // 'cpsp' |
||
| 1760 | DWRITE_FONT_FEATURE_TAG_CONTEXTUAL_SWASH = 0x68777363, // 'cswh' |
||
| 1761 | DWRITE_FONT_FEATURE_TAG_CURSIVE_POSITIONING = 0x73727563, // 'curs' |
||
| 1762 | DWRITE_FONT_FEATURE_TAG_DEFAULT = 0x746c6664, // 'dflt' |
||
| 1763 | DWRITE_FONT_FEATURE_TAG_DISCRETIONARY_LIGATURES = 0x67696c64, // 'dlig' |
||
| 1764 | DWRITE_FONT_FEATURE_TAG_EXPERT_FORMS = 0x74707865, // 'expt' |
||
| 1765 | DWRITE_FONT_FEATURE_TAG_FRACTIONS = 0x63617266, // 'frac' |
||
| 1766 | DWRITE_FONT_FEATURE_TAG_FULL_WIDTH = 0x64697766, // 'fwid' |
||
| 1767 | DWRITE_FONT_FEATURE_TAG_HALF_FORMS = 0x666c6168, // 'half' |
||
| 1768 | DWRITE_FONT_FEATURE_TAG_HALANT_FORMS = 0x6e6c6168, // 'haln' |
||
| 1769 | DWRITE_FONT_FEATURE_TAG_ALTERNATE_HALF_WIDTH = 0x746c6168, // 'halt' |
||
| 1770 | DWRITE_FONT_FEATURE_TAG_HISTORICAL_FORMS = 0x74736968, // 'hist' |
||
| 1771 | DWRITE_FONT_FEATURE_TAG_HORIZONTAL_KANA_ALTERNATES = 0x616e6b68, // 'hkna' |
||
| 1772 | DWRITE_FONT_FEATURE_TAG_HISTORICAL_LIGATURES = 0x67696c68, // 'hlig' |
||
| 1773 | DWRITE_FONT_FEATURE_TAG_HALF_WIDTH = 0x64697768, // 'hwid' |
||
| 1774 | DWRITE_FONT_FEATURE_TAG_HOJO_KANJI_FORMS = 0x6f6a6f68, // 'hojo' |
||
| 1775 | DWRITE_FONT_FEATURE_TAG_JIS04_FORMS = 0x3430706a, // 'jp04' |
||
| 1776 | DWRITE_FONT_FEATURE_TAG_JIS78_FORMS = 0x3837706a, // 'jp78' |
||
| 1777 | DWRITE_FONT_FEATURE_TAG_JIS83_FORMS = 0x3338706a, // 'jp83' |
||
| 1778 | DWRITE_FONT_FEATURE_TAG_JIS90_FORMS = 0x3039706a, // 'jp90' |
||
| 1779 | DWRITE_FONT_FEATURE_TAG_KERNING = 0x6e72656b, // 'kern' |
||
| 1780 | DWRITE_FONT_FEATURE_TAG_STANDARD_LIGATURES = 0x6167696c, // 'liga' |
||
| 1781 | DWRITE_FONT_FEATURE_TAG_LINING_FIGURES = 0x6d756e6c, // 'lnum' |
||
| 1782 | DWRITE_FONT_FEATURE_TAG_LOCALIZED_FORMS = 0x6c636f6c, // 'locl' |
||
| 1783 | DWRITE_FONT_FEATURE_TAG_MARK_POSITIONING = 0x6b72616d, // 'mark' |
||
| 1784 | DWRITE_FONT_FEATURE_TAG_MATHEMATICAL_GREEK = 0x6b72676d, // 'mgrk' |
||
| 1785 | DWRITE_FONT_FEATURE_TAG_MARK_TO_MARK_POSITIONING = 0x6b6d6b6d, // 'mkmk' |
||
| 1786 | DWRITE_FONT_FEATURE_TAG_ALTERNATE_ANNOTATION_FORMS = 0x746c616e, // 'nalt' |
||
| 1787 | DWRITE_FONT_FEATURE_TAG_NLC_KANJI_FORMS = 0x6b636c6e, // 'nlck' |
||
| 1788 | DWRITE_FONT_FEATURE_TAG_OLD_STYLE_FIGURES = 0x6d756e6f, // 'onum' |
||
| 1789 | DWRITE_FONT_FEATURE_TAG_ORDINALS = 0x6e64726f, // 'ordn' |
||
| 1790 | DWRITE_FONT_FEATURE_TAG_PROPORTIONAL_ALTERNATE_WIDTH = 0x746c6170, // 'palt' |
||
| 1791 | DWRITE_FONT_FEATURE_TAG_PETITE_CAPITALS = 0x70616370, // 'pcap' |
||
| 1792 | DWRITE_FONT_FEATURE_TAG_PROPORTIONAL_FIGURES = 0x6d756e70, // 'pnum' |
||
| 1793 | DWRITE_FONT_FEATURE_TAG_PROPORTIONAL_WIDTHS = 0x64697770, // 'pwid' |
||
| 1794 | DWRITE_FONT_FEATURE_TAG_QUARTER_WIDTHS = 0x64697771, // 'qwid' |
||
| 1795 | DWRITE_FONT_FEATURE_TAG_REQUIRED_LIGATURES = 0x67696c72, // 'rlig' |
||
| 1796 | DWRITE_FONT_FEATURE_TAG_RUBY_NOTATION_FORMS = 0x79627572, // 'ruby' |
||
| 1797 | DWRITE_FONT_FEATURE_TAG_STYLISTIC_ALTERNATES = 0x746c6173, // 'salt' |
||
| 1798 | DWRITE_FONT_FEATURE_TAG_SCIENTIFIC_INFERIORS = 0x666e6973, // 'sinf' |
||
| 1799 | DWRITE_FONT_FEATURE_TAG_SMALL_CAPITALS = 0x70636d73, // 'smcp' |
||
| 1800 | DWRITE_FONT_FEATURE_TAG_SIMPLIFIED_FORMS = 0x6c706d73, // 'smpl' |
||
| 1801 | DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_1 = 0x31307373, // 'ss01' |
||
| 1802 | DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_2 = 0x32307373, // 'ss02' |
||
| 1803 | DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_3 = 0x33307373, // 'ss03' |
||
| 1804 | DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_4 = 0x34307373, // 'ss04' |
||
| 1805 | DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_5 = 0x35307373, // 'ss05' |
||
| 1806 | DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_6 = 0x36307373, // 'ss06' |
||
| 1807 | DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_7 = 0x37307373, // 'ss07' |
||
| 1808 | DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_8 = 0x38307373, // 'ss08' |
||
| 1809 | DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_9 = 0x39307373, // 'ss09' |
||
| 1810 | DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_10 = 0x30317373, // 'ss10' |
||
| 1811 | DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_11 = 0x31317373, // 'ss11' |
||
| 1812 | DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_12 = 0x32317373, // 'ss12' |
||
| 1813 | DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_13 = 0x33317373, // 'ss13' |
||
| 1814 | DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_14 = 0x34317373, // 'ss14' |
||
| 1815 | DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_15 = 0x35317373, // 'ss15' |
||
| 1816 | DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_16 = 0x36317373, // 'ss16' |
||
| 1817 | DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_17 = 0x37317373, // 'ss17' |
||
| 1818 | DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_18 = 0x38317373, // 'ss18' |
||
| 1819 | DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_19 = 0x39317373, // 'ss19' |
||
| 1820 | DWRITE_FONT_FEATURE_TAG_STYLISTIC_SET_20 = 0x30327373, // 'ss20' |
||
| 1821 | DWRITE_FONT_FEATURE_TAG_SUBSCRIPT = 0x73627573, // 'subs' |
||
| 1822 | DWRITE_FONT_FEATURE_TAG_SUPERSCRIPT = 0x73707573, // 'sups' |
||
| 1823 | DWRITE_FONT_FEATURE_TAG_SWASH = 0x68737773, // 'swsh' |
||
| 1824 | DWRITE_FONT_FEATURE_TAG_TITLING = 0x6c746974, // 'titl' |
||
| 1825 | DWRITE_FONT_FEATURE_TAG_TRADITIONAL_NAME_FORMS = 0x6d616e74, // 'tnam' |
||
| 1826 | DWRITE_FONT_FEATURE_TAG_TABULAR_FIGURES = 0x6d756e74, // 'tnum' |
||
| 1827 | DWRITE_FONT_FEATURE_TAG_TRADITIONAL_FORMS = 0x64617274, // 'trad' |
||
| 1828 | DWRITE_FONT_FEATURE_TAG_THIRD_WIDTHS = 0x64697774, // 'twid' |
||
| 1829 | DWRITE_FONT_FEATURE_TAG_UNICASE = 0x63696e75, // 'unic' |
||
| 1830 | DWRITE_FONT_FEATURE_TAG_SLASHED_ZERO = 0x6f72657a, // 'zero' |
||
| 1831 | }; |
||
| 1832 | |||
| 1833 | /// <summary> |
||
| 1834 | /// The DWRITE_TEXT_RANGE structure specifies a range of text positions where format is applied. |
||
| 1835 | /// </summary> |
||
| 1836 | struct DWRITE_TEXT_RANGE |
||
| 1837 | { |
||
| 1838 | /// <summary> |
||
| 1839 | /// The start text position of the range. |
||
| 1840 | /// </summary> |
||
| 1841 | UINT32 startPosition; |
||
| 1842 | |||
| 1843 | /// <summary> |
||
| 1844 | /// The number of text positions in the range. |
||
| 1845 | /// </summary> |
||
| 1846 | UINT32 length; |
||
| 1847 | }; |
||
| 1848 | |||
| 1849 | /// <summary> |
||
| 1850 | /// The DWRITE_FONT_FEATURE structure specifies properties used to identify and execute typographic feature in the font. |
||
| 1851 | /// </summary> |
||
| 1852 | struct DWRITE_FONT_FEATURE |
||
| 1853 | { |
||
| 1854 | /// <summary> |
||
| 1855 | /// The feature OpenType name identifier. |
||
| 1856 | /// </summary> |
||
| 1857 | DWRITE_FONT_FEATURE_TAG nameTag; |
||
| 1858 | |||
| 1859 | /// <summary> |
||
| 1860 | /// Execution parameter of the feature. |
||
| 1861 | /// </summary> |
||
| 1862 | /// <remarks> |
||
| 1863 | /// The parameter should be non-zero to enable the feature. Once enabled, a feature can't be disabled again within |
||
| 1864 | /// the same range. Features requiring a selector use this value to indicate the selector index. |
||
| 1865 | /// </remarks> |
||
| 1866 | UINT32 parameter; |
||
| 1867 | }; |
||
| 1868 | |||
| 1869 | /// <summary> |
||
| 1870 | /// Defines a set of typographic features to be applied during shaping. |
||
| 1871 | /// Notice the character range which this feature list spans is specified |
||
| 1872 | /// as a separate parameter to GetGlyphs. |
||
| 1873 | /// </summary> |
||
| 1874 | struct DWRITE_TYPOGRAPHIC_FEATURES |
||
| 1875 | { |
||
| 1876 | /// <summary> |
||
| 1877 | /// Array of font features. |
||
| 1878 | /// </summary> |
||
| 1879 | __field_ecount(featureCount) DWRITE_FONT_FEATURE* features; |
||
| 1880 | |||
| 1881 | /// <summary> |
||
| 1882 | /// The number of features. |
||
| 1883 | /// </summary> |
||
| 1884 | UINT32 featureCount; |
||
| 1885 | }; |
||
| 1886 | |||
| 1887 | /// <summary> |
||
| 1888 | /// The DWRITE_TRIMMING structure specifies the trimming option for text overflowing the layout box. |
||
| 1889 | /// </summary> |
||
| 1890 | struct DWRITE_TRIMMING |
||
| 1891 | { |
||
| 1892 | /// <summary> |
||
| 1893 | /// Text granularity of which trimming applies. |
||
| 1894 | /// </summary> |
||
| 1895 | DWRITE_TRIMMING_GRANULARITY granularity; |
||
| 1896 | |||
| 1897 | /// <summary> |
||
| 1898 | /// Character code used as the delimiter signaling the beginning of the portion of text to be preserved, |
||
| 1899 | /// most useful for path ellipsis, where the delimeter would be a slash. |
||
| 1900 | /// </summary> |
||
| 1901 | UINT32 delimiter; |
||
| 1902 | |||
| 1903 | /// <summary> |
||
| 1904 | /// How many occurences of the delimiter to step back. |
||
| 1905 | /// </summary> |
||
| 1906 | UINT32 delimiterCount; |
||
| 1907 | }; |
||
| 1908 | |||
| 1909 | |||
| 1910 | interface IDWriteTypography; |
||
| 1911 | interface IDWriteInlineObject; |
||
| 1912 | |||
| 1913 | /// <summary> |
||
| 1914 | /// The format of text used for text layout purpose. |
||
| 1915 | /// </summary> |
||
| 1916 | /// <remarks> |
||
| 1917 | /// This object may not be thread-safe and it may carry the state of text format change. |
||
| 1918 | /// </remarks> |
||
| 1919 | interface DWRITE_DECLARE_INTERFACE("9c906818-31d7-4fd3-a151-7c5e225db55a") IDWriteTextFormat : public IUnknown |
||
| 1920 | { |
||
| 1921 | /// <summary> |
||
| 1922 | /// Set alignment option of text relative to layout box's leading and trailing edge. |
||
| 1923 | /// </summary> |
||
| 1924 | /// <param name="textAlignment">Text alignment option</param> |
||
| 1925 | /// <returns> |
||
| 1926 | /// Standard HRESULT error code. |
||
| 1927 | /// </returns> |
||
| 1928 | STDMETHOD(SetTextAlignment)( |
||
| 1929 | DWRITE_TEXT_ALIGNMENT textAlignment |
||
| 1930 | ) PURE; |
||
| 1931 | |||
| 1932 | /// <summary> |
||
| 1933 | /// Set alignment option of paragraph relative to layout box's top and bottom edge. |
||
| 1934 | /// </summary> |
||
| 1935 | /// <param name="paragraphAlignment">Paragraph alignment option</param> |
||
| 1936 | /// <returns> |
||
| 1937 | /// Standard HRESULT error code. |
||
| 1938 | /// </returns> |
||
| 1939 | STDMETHOD(SetParagraphAlignment)( |
||
| 1940 | DWRITE_PARAGRAPH_ALIGNMENT paragraphAlignment |
||
| 1941 | ) PURE; |
||
| 1942 | |||
| 1943 | /// <summary> |
||
| 1944 | /// Set word wrapping option. |
||
| 1945 | /// </summary> |
||
| 1946 | /// <param name="wordWrapping">Word wrapping option</param> |
||
| 1947 | /// <returns> |
||
| 1948 | /// Standard HRESULT error code. |
||
| 1949 | /// </returns> |
||
| 1950 | STDMETHOD(SetWordWrapping)( |
||
| 1951 | DWRITE_WORD_WRAPPING wordWrapping |
||
| 1952 | ) PURE; |
||
| 1953 | |||
| 1954 | /// <summary> |
||
| 1955 | /// Set paragraph reading direction. |
||
| 1956 | /// </summary> |
||
| 1957 | /// <param name="readingDirection">Text reading direction</param> |
||
| 1958 | /// <returns> |
||
| 1959 | /// Standard HRESULT error code. |
||
| 1960 | /// </returns> |
||
| 1961 | STDMETHOD(SetReadingDirection)( |
||
| 1962 | DWRITE_READING_DIRECTION readingDirection |
||
| 1963 | ) PURE; |
||
| 1964 | |||
| 1965 | /// <summary> |
||
| 1966 | /// Set paragraph flow direction. |
||
| 1967 | /// </summary> |
||
| 1968 | /// <param name="flowDirection">Paragraph flow direction</param> |
||
| 1969 | /// <returns> |
||
| 1970 | /// Standard HRESULT error code. |
||
| 1971 | /// </returns> |
||
| 1972 | STDMETHOD(SetFlowDirection)( |
||
| 1973 | DWRITE_FLOW_DIRECTION flowDirection |
||
| 1974 | ) PURE; |
||
| 1975 | |||
| 1976 | /// <summary> |
||
| 1977 | /// Set incremental tab stop position. |
||
| 1978 | /// </summary> |
||
| 1979 | /// <param name="incrementalTabStop">The incremental tab stop value</param> |
||
| 1980 | /// <returns> |
||
| 1981 | /// Standard HRESULT error code. |
||
| 1982 | /// </returns> |
||
| 1983 | STDMETHOD(SetIncrementalTabStop)( |
||
| 1984 | FLOAT incrementalTabStop |
||
| 1985 | ) PURE; |
||
| 1986 | |||
| 1987 | /// <summary> |
||
| 1988 | /// Set trimming options for any trailing text exceeding the layout width |
||
| 1989 | /// or for any far text exceeding the layout height. |
||
| 1990 | /// </summary> |
||
| 1991 | /// <param name="trimmingOptions">Text trimming options.</param> |
||
| 1992 | /// <param name="trimmingSign">Application-defined omission sign. This parameter may be NULL if no trimming sign is desired.</param> |
||
| 1993 | /// <remarks> |
||
| 1994 | /// Any inline object can be used for the trimming sign, but CreateEllipsisTrimmingSign |
||
| 1995 | /// provides a typical ellipsis symbol. Trimming is also useful vertically for hiding |
||
| 1996 | /// partial lines. |
||
| 1997 | /// </remarks> |
||
| 1998 | /// <returns> |
||
| 1999 | /// Standard HRESULT error code. |
||
| 2000 | /// </returns> |
||
| 2001 | STDMETHOD(SetTrimming)( |
||
| 2002 | __in DWRITE_TRIMMING const* trimmingOptions, |
||
| 2003 | IDWriteInlineObject* trimmingSign |
||
| 2004 | ) PURE; |
||
| 2005 | |||
| 2006 | /// <summary> |
||
| 2007 | /// Set line spacing. |
||
| 2008 | /// </summary> |
||
| 2009 | /// <param name="lineSpacingMethod">How to determine line height.</param> |
||
| 2010 | /// <param name="lineSpacing">The line height, or rather distance between one baseline to another.</param> |
||
| 2011 | /// <param name="baseline">Distance from top of line to baseline. A reasonable ratio to lineSpacing is 80%.</param> |
||
| 2012 | /// <remarks> |
||
| 2013 | /// For the default method, spacing depends solely on the content. |
||
| 2014 | /// For uniform spacing, the given line height will override the content. |
||
| 2015 | /// </remarks> |
||
| 2016 | /// <returns> |
||
| 2017 | /// Standard HRESULT error code. |
||
| 2018 | /// </returns> |
||
| 2019 | STDMETHOD(SetLineSpacing)( |
||
| 2020 | DWRITE_LINE_SPACING_METHOD lineSpacingMethod, |
||
| 2021 | FLOAT lineSpacing, |
||
| 2022 | FLOAT baseline |
||
| 2023 | ) PURE; |
||
| 2024 | |||
| 2025 | /// <summary> |
||
| 2026 | /// Get alignment option of text relative to layout box's leading and trailing edge. |
||
| 2027 | /// </summary> |
||
| 2028 | STDMETHOD_(DWRITE_TEXT_ALIGNMENT, GetTextAlignment)() PURE; |
||
| 2029 | |||
| 2030 | /// <summary> |
||
| 2031 | /// Get alignment option of paragraph relative to layout box's top and bottom edge. |
||
| 2032 | /// </summary> |
||
| 2033 | STDMETHOD_(DWRITE_PARAGRAPH_ALIGNMENT, GetParagraphAlignment)() PURE; |
||
| 2034 | |||
| 2035 | /// <summary> |
||
| 2036 | /// Get word wrapping option. |
||
| 2037 | /// </summary> |
||
| 2038 | STDMETHOD_(DWRITE_WORD_WRAPPING, GetWordWrapping)() PURE; |
||
| 2039 | |||
| 2040 | /// <summary> |
||
| 2041 | /// Get paragraph reading direction. |
||
| 2042 | /// </summary> |
||
| 2043 | STDMETHOD_(DWRITE_READING_DIRECTION, GetReadingDirection)() PURE; |
||
| 2044 | |||
| 2045 | /// <summary> |
||
| 2046 | /// Get paragraph flow direction. |
||
| 2047 | /// </summary> |
||
| 2048 | STDMETHOD_(DWRITE_FLOW_DIRECTION, GetFlowDirection)() PURE; |
||
| 2049 | |||
| 2050 | /// <summary> |
||
| 2051 | /// Get incremental tab stop position. |
||
| 2052 | /// </summary> |
||
| 2053 | STDMETHOD_(FLOAT, GetIncrementalTabStop)() PURE; |
||
| 2054 | |||
| 2055 | /// <summary> |
||
| 2056 | /// Get trimming options for text overflowing the layout width. |
||
| 2057 | /// </summary> |
||
| 2058 | /// <param name="trimmingOptions">Text trimming options.</param> |
||
| 2059 | /// <param name="trimmingSign">Trimming omission sign. This parameter may be NULL.</param> |
||
| 2060 | /// <returns> |
||
| 2061 | /// Standard HRESULT error code. |
||
| 2062 | /// </returns> |
||
| 2063 | STDMETHOD(GetTrimming)( |
||
| 2064 | __out DWRITE_TRIMMING* trimmingOptions, |
||
| 2065 | __out IDWriteInlineObject** trimmingSign |
||
| 2066 | ) PURE; |
||
| 2067 | |||
| 2068 | /// <summary> |
||
| 2069 | /// Get line spacing. |
||
| 2070 | /// </summary> |
||
| 2071 | /// <param name="lineSpacingMethod">How line height is determined.</param> |
||
| 2072 | /// <param name="lineSpacing">The line height, or rather distance between one baseline to another.</param> |
||
| 2073 | /// <param name="baseline">Distance from top of line to baseline.</param> |
||
| 2074 | /// <returns> |
||
| 2075 | /// Standard HRESULT error code. |
||
| 2076 | /// </returns> |
||
| 2077 | STDMETHOD(GetLineSpacing)( |
||
| 2078 | __out DWRITE_LINE_SPACING_METHOD* lineSpacingMethod, |
||
| 2079 | __out FLOAT* lineSpacing, |
||
| 2080 | __out FLOAT* baseline |
||
| 2081 | ) PURE; |
||
| 2082 | |||
| 2083 | /// <summary> |
||
| 2084 | /// Get the font collection. |
||
| 2085 | /// </summary> |
||
| 2086 | /// <param name="fontCollection">The current font collection.</param> |
||
| 2087 | /// <returns> |
||
| 2088 | /// Standard HRESULT error code. |
||
| 2089 | /// </returns> |
||
| 2090 | STDMETHOD(GetFontCollection)( |
||
| 2091 | __out IDWriteFontCollection** fontCollection |
||
| 2092 | ) PURE; |
||
| 2093 | |||
| 2094 | /// <summary> |
||
| 2095 | /// Get the length of the font family name, in characters, not including the terminating NULL character. |
||
| 2096 | /// </summary> |
||
| 2097 | STDMETHOD_(UINT32, GetFontFamilyNameLength)() PURE; |
||
| 2098 | |||
| 2099 | /// <summary> |
||
| 2100 | /// Get a copy of the font family name. |
||
| 2101 | /// </summary> |
||
| 2102 | /// <param name="fontFamilyName">Character array that receives the current font family name</param> |
||
| 2103 | /// <param name="nameSize">Size of the character array in character count including the terminated NULL character.</param> |
||
| 2104 | /// <returns> |
||
| 2105 | /// Standard HRESULT error code. |
||
| 2106 | /// </returns> |
||
| 2107 | STDMETHOD(GetFontFamilyName)( |
||
| 2108 | __out_ecount_z(nameSize) WCHAR* fontFamilyName, |
||
| 2109 | UINT32 nameSize |
||
| 2110 | ) PURE; |
||
| 2111 | |||
| 2112 | /// <summary> |
||
| 2113 | /// Get the font weight. |
||
| 2114 | /// </summary> |
||
| 2115 | STDMETHOD_(DWRITE_FONT_WEIGHT, GetFontWeight)() PURE; |
||
| 2116 | |||
| 2117 | /// <summary> |
||
| 2118 | /// Get the font style. |
||
| 2119 | /// </summary> |
||
| 2120 | STDMETHOD_(DWRITE_FONT_STYLE, GetFontStyle)() PURE; |
||
| 2121 | |||
| 2122 | /// <summary> |
||
| 2123 | /// Get the font stretch. |
||
| 2124 | /// </summary> |
||
| 2125 | STDMETHOD_(DWRITE_FONT_STRETCH, GetFontStretch)() PURE; |
||
| 2126 | |||
| 2127 | /// <summary> |
||
| 2128 | /// Get the font em height. |
||
| 2129 | /// </summary> |
||
| 2130 | STDMETHOD_(FLOAT, GetFontSize)() PURE; |
||
| 2131 | |||
| 2132 | /// <summary> |
||
| 2133 | /// Get the length of the locale name, in characters, not including the terminating NULL character. |
||
| 2134 | /// </summary> |
||
| 2135 | STDMETHOD_(UINT32, GetLocaleNameLength)() PURE; |
||
| 2136 | |||
| 2137 | /// <summary> |
||
| 2138 | /// Get a copy of the locale name. |
||
| 2139 | /// </summary> |
||
| 2140 | /// <param name="localeName">Character array that receives the current locale name</param> |
||
| 2141 | /// <param name="nameSize">Size of the character array in character count including the terminated NULL character.</param> |
||
| 2142 | /// <returns> |
||
| 2143 | /// Standard HRESULT error code. |
||
| 2144 | /// </returns> |
||
| 2145 | STDMETHOD(GetLocaleName)( |
||
| 2146 | __out_ecount_z(nameSize) WCHAR* localeName, |
||
| 2147 | UINT32 nameSize |
||
| 2148 | ) PURE; |
||
| 2149 | }; |
||
| 2150 | |||
| 2151 | |||
| 2152 | /// <summary> |
||
| 2153 | /// Font typography setting. |
||
| 2154 | /// </summary> |
||
| 2155 | interface DWRITE_DECLARE_INTERFACE("55f1112b-1dc2-4b3c-9541-f46894ed85b6") IDWriteTypography : public IUnknown |
||
| 2156 | { |
||
| 2157 | /// <summary> |
||
| 2158 | /// Add font feature. |
||
| 2159 | /// </summary> |
||
| 2160 | /// <param name="fontFeature">The font feature to add.</param> |
||
| 2161 | /// <returns> |
||
| 2162 | /// Standard HRESULT error code. |
||
| 2163 | /// </returns> |
||
| 2164 | STDMETHOD(AddFontFeature)( |
||
| 2165 | DWRITE_FONT_FEATURE fontFeature |
||
| 2166 | ) PURE; |
||
| 2167 | |||
| 2168 | /// <summary> |
||
| 2169 | /// Get the number of font features. |
||
| 2170 | /// </summary> |
||
| 2171 | STDMETHOD_(UINT32, GetFontFeatureCount)() PURE; |
||
| 2172 | |||
| 2173 | /// <summary> |
||
| 2174 | /// Get the font feature at the specified index. |
||
| 2175 | /// </summary> |
||
| 2176 | /// <param name="fontFeatureIndex">The zero-based index of the font feature to get.</param> |
||
| 2177 | /// <param name="fontFeature">The font feature.</param> |
||
| 2178 | /// <returns> |
||
| 2179 | /// Standard HRESULT error code. |
||
| 2180 | /// </returns> |
||
| 2181 | STDMETHOD(GetFontFeature)( |
||
| 2182 | UINT32 fontFeatureIndex, |
||
| 2183 | __out DWRITE_FONT_FEATURE* fontFeature |
||
| 2184 | ) PURE; |
||
| 2185 | }; |
||
| 2186 | |||
| 2187 | enum DWRITE_SCRIPT_SHAPES |
||
| 2188 | { |
||
| 2189 | /// <summary> |
||
| 2190 | /// No additional shaping requirement. Text is shaped with the writing system default behavior. |
||
| 2191 | /// </summary> |
||
| 2192 | DWRITE_SCRIPT_SHAPES_DEFAULT = 0, |
||
| 2193 | |||
| 2194 | /// <summary> |
||
| 2195 | /// Text should leave no visual on display i.e. control or format control characters. |
||
| 2196 | /// </summary> |
||
| 2197 | DWRITE_SCRIPT_SHAPES_NO_VISUAL = 1 |
||
| 2198 | }; |
||
| 2199 | |||
| 2200 | #ifdef DEFINE_ENUM_FLAG_OPERATORS |
||
| 2201 | DEFINE_ENUM_FLAG_OPERATORS(DWRITE_SCRIPT_SHAPES); |
||
| 2202 | #endif |
||
| 2203 | |||
| 2204 | /// <summary> |
||
| 2205 | /// Association of text and its writing system script as well as some display attributes. |
||
| 2206 | /// </summary> |
||
| 2207 | struct DWRITE_SCRIPT_ANALYSIS |
||
| 2208 | { |
||
| 2209 | /// <summary> |
||
| 2210 | /// Zero-based index representation of writing system script. |
||
| 2211 | /// </summary> |
||
| 2212 | UINT16 script; |
||
| 2213 | |||
| 2214 | /// <summary> |
||
| 2215 | /// Additional shaping requirement of text. |
||
| 2216 | /// </summary> |
||
| 2217 | DWRITE_SCRIPT_SHAPES shapes; |
||
| 2218 | }; |
||
| 2219 | |||
| 2220 | /// <summary> |
||
| 2221 | /// Condition at the edges of inline object or text used to determine |
||
| 2222 | /// line-breaking behavior. |
||
| 2223 | /// </summary> |
||
| 2224 | enum DWRITE_BREAK_CONDITION |
||
| 2225 | { |
||
| 2226 | /// <summary> |
||
| 2227 | /// Whether a break is allowed is determined by the condition of the |
||
| 2228 | /// neighboring text span or inline object. |
||
| 2229 | /// </summary> |
||
| 2230 | DWRITE_BREAK_CONDITION_NEUTRAL, |
||
| 2231 | |||
| 2232 | /// <summary> |
||
| 2233 | /// A break is allowed, unless overruled by the condition of the |
||
| 2234 | /// neighboring text span or inline object, either prohibited by a |
||
| 2235 | /// May Not or forced by a Must. |
||
| 2236 | /// </summary> |
||
| 2237 | DWRITE_BREAK_CONDITION_CAN_BREAK, |
||
| 2238 | |||
| 2239 | /// <summary> |
||
| 2240 | /// There should be no break, unless overruled by a Must condition from |
||
| 2241 | /// the neighboring text span or inline object. |
||
| 2242 | /// </summary> |
||
| 2243 | DWRITE_BREAK_CONDITION_MAY_NOT_BREAK, |
||
| 2244 | |||
| 2245 | /// <summary> |
||
| 2246 | /// The break must happen, regardless of the condition of the adjacent |
||
| 2247 | /// text span or inline object. |
||
| 2248 | /// </summary> |
||
| 2249 | DWRITE_BREAK_CONDITION_MUST_BREAK |
||
| 2250 | }; |
||
| 2251 | |||
| 2252 | /// <summary> |
||
| 2253 | /// Line breakpoint characteristics of a character. |
||
| 2254 | /// </summary> |
||
| 2255 | struct DWRITE_LINE_BREAKPOINT |
||
| 2256 | { |
||
| 2257 | /// <summary> |
||
| 2258 | /// Breaking condition before the character. |
||
| 2259 | /// </summary> |
||
| 2260 | UINT8 breakConditionBefore : 2; |
||
| 2261 | |||
| 2262 | /// <summary> |
||
| 2263 | /// Breaking condition after the character. |
||
| 2264 | /// </summary> |
||
| 2265 | UINT8 breakConditionAfter : 2; |
||
| 2266 | |||
| 2267 | /// <summary> |
||
| 2268 | /// The character is some form of whitespace, which may be meaningful |
||
| 2269 | /// for justification. |
||
| 2270 | /// </summary> |
||
| 2271 | UINT8 isWhitespace : 1; |
||
| 2272 | |||
| 2273 | /// <summary> |
||
| 2274 | /// The character is a soft hyphen, often used to indicate hyphenation |
||
| 2275 | /// points inside words. |
||
| 2276 | /// </summary> |
||
| 2277 | UINT8 isSoftHyphen : 1; |
||
| 2278 | |||
| 2279 | UINT8 padding : 2; |
||
| 2280 | }; |
||
| 2281 | |||
| 2282 | /// <summary> |
||
| 2283 | /// How to apply number substitution on digits and related punctuation. |
||
| 2284 | /// </summary> |
||
| 2285 | enum DWRITE_NUMBER_SUBSTITUTION_METHOD |
||
| 2286 | { |
||
| 2287 | /// <summary> |
||
| 2288 | /// Specifies that the substitution method should be determined based |
||
| 2289 | /// on LOCALE_IDIGITSUBSTITUTION value of the specified text culture. |
||
| 2290 | /// </summary> |
||
| 2291 | DWRITE_NUMBER_SUBSTITUTION_METHOD_FROM_CULTURE, |
||
| 2292 | |||
| 2293 | /// <summary> |
||
| 2294 | /// If the culture is Arabic or Farsi, specifies that the number shape |
||
| 2295 | /// depend on the context. Either traditional or nominal number shape |
||
| 2296 | /// are used depending on the nearest preceding strong character or (if |
||
| 2297 | /// there is none) the reading direction of the paragraph. |
||
| 2298 | /// </summary> |
||
| 2299 | DWRITE_NUMBER_SUBSTITUTION_METHOD_CONTEXTUAL, |
||
| 2300 | |||
| 2301 | /// <summary> |
||
| 2302 | /// Specifies that code points 0x30-0x39 are always rendered as nominal numeral |
||
| 2303 | /// shapes (ones of the European number), i.e., no substitution is performed. |
||
| 2304 | /// </summary> |
||
| 2305 | DWRITE_NUMBER_SUBSTITUTION_METHOD_NONE, |
||
| 2306 | |||
| 2307 | /// <summary> |
||
| 2308 | /// Specifies that number are rendered using the national number shape |
||
| 2309 | /// as specified by the LOCALE_SNATIVEDIGITS value of the specified text culture. |
||
| 2310 | /// </summary> |
||
| 2311 | DWRITE_NUMBER_SUBSTITUTION_METHOD_NATIONAL, |
||
| 2312 | |||
| 2313 | /// <summary> |
||
| 2314 | /// Specifies that number are rendered using the traditional shape |
||
| 2315 | /// for the specified culture. For most cultures, this is the same as |
||
| 2316 | /// NativeNational. However, NativeNational results in Latin number |
||
| 2317 | /// for some Arabic cultures, whereas this value results in Arabic |
||
| 2318 | /// number for all Arabic cultures. |
||
| 2319 | /// </summary> |
||
| 2320 | DWRITE_NUMBER_SUBSTITUTION_METHOD_TRADITIONAL |
||
| 2321 | }; |
||
| 2322 | |||
| 2323 | /// <summary> |
||
| 2324 | /// Holds the appropriate digits and numeric punctuation for a given locale. |
||
| 2325 | /// </summary> |
||
| 2326 | interface DECLSPEC_UUID("14885CC9-BAB0-4f90-B6ED-5C366A2CD03D") DECLSPEC_NOVTABLE IDWriteNumberSubstitution : public IUnknown |
||
| 2327 | { |
||
| 2328 | }; |
||
| 2329 | |||
| 2330 | /// <summary> |
||
| 2331 | /// Shaping output properties per input character. |
||
| 2332 | /// </summary> |
||
| 2333 | struct DWRITE_SHAPING_TEXT_PROPERTIES |
||
| 2334 | { |
||
| 2335 | /// <summary> |
||
| 2336 | /// This character can be shaped independently from the others |
||
| 2337 | /// (usually set for the space character). |
||
| 2338 | /// </summary> |
||
| 2339 | UINT16 isShapedAlone : 1; |
||
| 2340 | |||
| 2341 | /// <summary> |
||
| 2342 | /// Reserved for use by shaping engine. |
||
| 2343 | /// </summary> |
||
| 2344 | UINT16 reserved : 15; |
||
| 2345 | }; |
||
| 2346 | |||
| 2347 | /// <summary> |
||
| 2348 | /// Shaping output properties per output glyph. |
||
| 2349 | /// </summary> |
||
| 2350 | struct DWRITE_SHAPING_GLYPH_PROPERTIES |
||
| 2351 | { |
||
| 2352 | /// <summary> |
||
| 2353 | /// Justification class, whether to use spacing, kashidas, or |
||
| 2354 | /// another method. This exists for backwards compatibility |
||
| 2355 | /// with Uniscribe's SCRIPT_JUSTIFY enum. |
||
| 2356 | /// </summary> |
||
| 2357 | UINT16 justification : 4; |
||
| 2358 | |||
| 2359 | /// <summary> |
||
| 2360 | /// Indicates glyph is the first of a cluster. |
||
| 2361 | /// </summary> |
||
| 2362 | UINT16 isClusterStart : 1; |
||
| 2363 | |||
| 2364 | /// <summary> |
||
| 2365 | /// Glyph is a diacritic. |
||
| 2366 | /// </summary> |
||
| 2367 | UINT16 isDiacritic : 1; |
||
| 2368 | |||
| 2369 | /// <summary> |
||
| 2370 | /// Glyph has no width, blank, ZWJ, ZWNJ etc. |
||
| 2371 | /// </summary> |
||
| 2372 | UINT16 isZeroWidthSpace : 1; |
||
| 2373 | |||
| 2374 | /// <summary> |
||
| 2375 | /// Reserved for use by shaping engine. |
||
| 2376 | /// </summary> |
||
| 2377 | UINT16 reserved : 9; |
||
| 2378 | }; |
||
| 2379 | |||
| 2380 | /// <summary> |
||
| 2381 | /// The interface implemented by the text analyzer's client to provide text to |
||
| 2382 | /// the analyzer. It allows the separation between the logical view of text as |
||
| 2383 | /// a continuous stream of characters identifiable by unique text positions, |
||
| 2384 | /// and the actual memory layout of potentially discrete blocks of text in the |
||
| 2385 | /// client's backing store. |
||
| 2386 | /// |
||
| 2387 | /// If any of these callbacks returns an error, the analysis functions will |
||
| 2388 | /// stop prematurely and return a callback error. Rather than return E_NOTIMPL, |
||
| 2389 | /// an application should stub the method and return a constant/null and S_OK. |
||
| 2390 | /// </summary> |
||
| 2391 | interface DECLSPEC_UUID("688e1a58-5094-47c8-adc8-fbcea60ae92b") DECLSPEC_NOVTABLE IDWriteTextAnalysisSource : public IUnknown |
||
| 2392 | { |
||
| 2393 | /// <summary> |
||
| 2394 | /// Get a block of text starting at the specified text position. |
||
| 2395 | /// Returning NULL indicates the end of text - the position is after |
||
| 2396 | /// the last character. This function is called iteratively for |
||
| 2397 | /// each consecutive block, tying together several fragmented blocks |
||
| 2398 | /// in the backing store into a virtual contiguous string. |
||
| 2399 | /// </summary> |
||
| 2400 | /// <param name="textPosition">First position of the piece to obtain. All |
||
| 2401 | /// positions are in UTF16 code-units, not whole characters, which |
||
| 2402 | /// matters when supplementary characters are used.</param> |
||
| 2403 | /// <param name="textString">Address that receives a pointer to the text block |
||
| 2404 | /// at the specified position.</param> |
||
| 2405 | /// <param name="textLength">Number of UTF16 units of the retrieved chunk. |
||
| 2406 | /// The returned length is not the length of the block, but the length |
||
| 2407 | /// remaining in the block, from the given position until its end. |
||
| 2408 | /// So querying for a position that is 75 positions into a 100 |
||
| 2409 | /// postition block would return 25.</param> |
||
| 2410 | /// <returns>Pointer to the first character at the given text position. |
||
| 2411 | /// NULL indicates no chunk available at the specified position, either |
||
| 2412 | /// because textPosition >= the entire text content length or because the |
||
| 2413 | /// queried position is not mapped into the app's backing store.</returns> |
||
| 2414 | /// <remarks> |
||
| 2415 | /// Although apps can implement sparse textual content that only maps part of |
||
| 2416 | /// the backing store, the app must map any text that is in the range passed |
||
| 2417 | /// to any analysis functions. |
||
| 2418 | /// </remarks> |
||
| 2419 | STDMETHOD(GetTextAtPosition)( |
||
| 2420 | UINT32 textPosition, |
||
| 2421 | __out WCHAR const** textString, |
||
| 2422 | __out UINT32* textLength |
||
| 2423 | ) PURE; |
||
| 2424 | |||
| 2425 | /// <summary> |
||
| 2426 | /// Get a block of text immediately preceding the specified position. |
||
| 2427 | /// </summary> |
||
| 2428 | /// <param name="textPosition">Position immediately after the last position of the chunk to obtain.</param> |
||
| 2429 | /// <param name="textString">Address that receives a pointer to the text block |
||
| 2430 | /// at the specified position.</param> |
||
| 2431 | /// <param name="textLength">Number of UTF16 units of the retrieved block. |
||
| 2432 | /// The length returned is from the given position to the front of |
||
| 2433 | /// the block.</param> |
||
| 2434 | /// <returns>Pointer to the first character at (textPosition - textLength). |
||
| 2435 | /// NULL indicates no chunk available at the specified position, either |
||
| 2436 | /// because textPosition == 0,the textPosition > the entire text content |
||
| 2437 | /// length, or the queried position is not mapped into the app's backing |
||
| 2438 | /// store.</returns> |
||
| 2439 | /// <remarks> |
||
| 2440 | /// Although apps can implement sparse textual content that only maps part of |
||
| 2441 | /// the backing store, the app must map any text that is in the range passed |
||
| 2442 | /// to any analysis functions. |
||
| 2443 | /// </remarks> |
||
| 2444 | STDMETHOD(GetTextBeforePosition)( |
||
| 2445 | UINT32 textPosition, |
||
| 2446 | __out WCHAR const** textString, |
||
| 2447 | __out UINT32* textLength |
||
| 2448 | ) PURE; |
||
| 2449 | |||
| 2450 | /// <summary> |
||
| 2451 | /// Get paragraph reading direction. |
||
| 2452 | /// </summary> |
||
| 2453 | STDMETHOD_(DWRITE_READING_DIRECTION, GetParagraphReadingDirection)() PURE; |
||
| 2454 | |||
| 2455 | /// <summary> |
||
| 2456 | /// Get locale name on the range affected by it. |
||
| 2457 | /// </summary> |
||
| 2458 | /// <param name="textPosition">Position to get the locale name of.</param> |
||
| 2459 | /// <param name="textLength">Receives the length from the given position up to the |
||
| 2460 | /// next differing locale.</param> |
||
| 2461 | /// <param name="localeName">Address that receives a pointer to the locale |
||
| 2462 | /// at the specified position.</param> |
||
| 2463 | /// <remarks> |
||
| 2464 | /// The localeName pointer must remain valid until the next call or until |
||
| 2465 | /// the analysis returns. |
||
| 2466 | /// </remarks> |
||
| 2467 | STDMETHOD(GetLocaleName)( |
||
| 2468 | UINT32 textPosition, |
||
| 2469 | __out UINT32* textLength, |
||
| 2470 | __out_z WCHAR const** localeName |
||
| 2471 | ) PURE; |
||
| 2472 | |||
| 2473 | /// <summary> |
||
| 2474 | /// Get number substitution on the range affected by it. |
||
| 2475 | /// </summary> |
||
| 2476 | /// <param name="textPosition">Position to get the number substitution of.</param> |
||
| 2477 | /// <param name="textLength">Receives the length from the given position up to the |
||
| 2478 | /// next differing number substitution.</param> |
||
| 2479 | /// <param name="numberSubstitution">Address that receives a pointer to the number substitution |
||
| 2480 | /// at the specified position.</param> |
||
| 2481 | /// <remarks> |
||
| 2482 | /// Any implementation should return the number substitution with an |
||
| 2483 | /// incremented ref count, and the analysis will release when finished |
||
| 2484 | /// with it (either before the next call or before it returns). However, |
||
| 2485 | /// the sink callback may hold onto it after that. |
||
| 2486 | /// </remarks> |
||
| 2487 | STDMETHOD(GetNumberSubstitution)( |
||
| 2488 | UINT32 textPosition, |
||
| 2489 | __out UINT32* textLength, |
||
| 2490 | __out IDWriteNumberSubstitution** numberSubstitution |
||
| 2491 | ) PURE; |
||
| 2492 | }; |
||
| 2493 | |||
| 2494 | /// <summary> |
||
| 2495 | /// The interface implemented by the text analyzer's client to receive the |
||
| 2496 | /// output of a given text analysis. The Text analyzer disregards any current |
||
| 2497 | /// state of the analysis sink, therefore a Set method call on a range |
||
| 2498 | /// overwrites the previously set analysis result of the same range. |
||
| 2499 | /// </summary> |
||
| 2500 | interface DECLSPEC_UUID("5810cd44-0ca0-4701-b3fa-bec5182ae4f6") DECLSPEC_NOVTABLE IDWriteTextAnalysisSink : public IUnknown |
||
| 2501 | { |
||
| 2502 | /// <summary> |
||
| 2503 | /// Report script analysis for the text range. |
||
| 2504 | /// </summary> |
||
| 2505 | /// <param name="textPosition">Starting position to report from.</param> |
||
| 2506 | /// <param name="textLength">Number of UTF16 units of the reported range.</param> |
||
| 2507 | /// <param name="scriptAnalysis">Script analysis of characters in range.</param> |
||
| 2508 | /// <returns> |
||
| 2509 | /// A successful code or error code to abort analysis. |
||
| 2510 | /// </returns> |
||
| 2511 | STDMETHOD(SetScriptAnalysis)( |
||
| 2512 | UINT32 textPosition, |
||
| 2513 | UINT32 textLength, |
||
| 2514 | __in DWRITE_SCRIPT_ANALYSIS const* scriptAnalysis |
||
| 2515 | ) PURE; |
||
| 2516 | |||
| 2517 | /// <summary> |
||
| 2518 | /// Repport line-break opportunities for each character, starting from |
||
| 2519 | /// the specified position. |
||
| 2520 | /// </summary> |
||
| 2521 | /// <param name="textPosition">Starting position to report from.</param> |
||
| 2522 | /// <param name="textLength">Number of UTF16 units of the reported range.</param> |
||
| 2523 | /// <param name="lineBreakpoints">Breaking conditions for each character.</param> |
||
| 2524 | /// <returns> |
||
| 2525 | /// A successful code or error code to abort analysis. |
||
| 2526 | /// </returns> |
||
| 2527 | STDMETHOD(SetLineBreakpoints)( |
||
| 2528 | UINT32 textPosition, |
||
| 2529 | UINT32 textLength, |
||
| 2530 | __in_ecount(textLength) DWRITE_LINE_BREAKPOINT const* lineBreakpoints |
||
| 2531 | ) PURE; |
||
| 2532 | |||
| 2533 | /// <summary> |
||
| 2534 | /// Set bidirectional level on the range, called once per each |
||
| 2535 | /// level run change (either explicit or resolved implicit). |
||
| 2536 | /// </summary> |
||
| 2537 | /// <param name="textPosition">Starting position to report from.</param> |
||
| 2538 | /// <param name="textLength">Number of UTF16 units of the reported range.</param> |
||
| 2539 | /// <param name="explicitLevel">Explicit level from embedded control codes |
||
| 2540 | /// RLE/RLO/LRE/LRO/PDF, determined before any additional rules.</param> |
||
| 2541 | /// <param name="resolvedLevel">Final implicit level considering the |
||
| 2542 | /// explicit level and characters' natural directionality, after all |
||
| 2543 | /// Bidi rules have been applied.</param> |
||
| 2544 | /// <returns> |
||
| 2545 | /// A successful code or error code to abort analysis. |
||
| 2546 | /// </returns> |
||
| 2547 | STDMETHOD(SetBidiLevel)( |
||
| 2548 | UINT32 textPosition, |
||
| 2549 | UINT32 textLength, |
||
| 2550 | UINT8 explicitLevel, |
||
| 2551 | UINT8 resolvedLevel |
||
| 2552 | ) PURE; |
||
| 2553 | |||
| 2554 | /// <summary> |
||
| 2555 | /// Set number substitution on the range. |
||
| 2556 | /// </summary> |
||
| 2557 | /// <param name="textPosition">Starting position to report from.</param> |
||
| 2558 | /// <param name="textLength">Number of UTF16 units of the reported range.</param> |
||
| 2559 | /// <param name="numberSubstitution">The number substitution applicable to |
||
| 2560 | /// the returned range of text. The sink callback may hold onto it by |
||
| 2561 | /// incrementing its ref count.</param> |
||
| 2562 | /// <returns> |
||
| 2563 | /// A successful code or error code to abort analysis. |
||
| 2564 | /// </returns> |
||
| 2565 | /// <remark> |
||
| 2566 | /// Unlike script and bidi analysis, where every character passed to the |
||
| 2567 | /// analyzer has a result, this will only be called for those ranges where |
||
| 2568 | /// substitution is applicable. For any other range, you will simply not |
||
| 2569 | /// be called. |
||
| 2570 | /// </remark> |
||
| 2571 | STDMETHOD(SetNumberSubstitution)( |
||
| 2572 | UINT32 textPosition, |
||
| 2573 | UINT32 textLength, |
||
| 2574 | __notnull IDWriteNumberSubstitution* numberSubstitution |
||
| 2575 | ) PURE; |
||
| 2576 | }; |
||
| 2577 | |||
| 2578 | /// <summary> |
||
| 2579 | /// Analyzes various text properties for complex script processing. |
||
| 2580 | /// </summary> |
||
| 2581 | interface DWRITE_DECLARE_INTERFACE("b7e6163e-7f46-43b4-84b3-e4e6249c365d") IDWriteTextAnalyzer : public IUnknown |
||
| 2582 | { |
||
| 2583 | /// <summary> |
||
| 2584 | /// Analyzes a text range for script boundaries, reading text attributes |
||
| 2585 | /// from the source and reporting the Unicode script ID to the sink |
||
| 2586 | /// callback SetScript. |
||
| 2587 | /// </summary> |
||
| 2588 | /// <param name="analysisSource">Source object to analyze.</param> |
||
| 2589 | /// <param name="textPosition">Starting position within the source object.</param> |
||
| 2590 | /// <param name="textLength">Length to analyze.</param> |
||
| 2591 | /// <param name="analysisSink">Callback object.</param> |
||
| 2592 | /// <returns> |
||
| 2593 | /// Standard HRESULT error code. |
||
| 2594 | /// </returns> |
||
| 2595 | STDMETHOD(AnalyzeScript)( |
||
| 2596 | IDWriteTextAnalysisSource* analysisSource, |
||
| 2597 | UINT32 textPosition, |
||
| 2598 | UINT32 textLength, |
||
| 2599 | IDWriteTextAnalysisSink* analysisSink |
||
| 2600 | ) PURE; |
||
| 2601 | |||
| 2602 | /// <summary> |
||
| 2603 | /// Analyzes a text range for script directionality, reading attributes |
||
| 2604 | /// from the source and reporting levels to the sink callback SetBidiLevel. |
||
| 2605 | /// </summary> |
||
| 2606 | /// <param name="analysisSource">Source object to analyze.</param> |
||
| 2607 | /// <param name="textPosition">Starting position within the source object.</param> |
||
| 2608 | /// <param name="textLength">Length to analyze.</param> |
||
| 2609 | /// <param name="analysisSink">Callback object.</param> |
||
| 2610 | /// <returns> |
||
| 2611 | /// Standard HRESULT error code. |
||
| 2612 | /// </returns> |
||
| 2613 | /// <remarks> |
||
| 2614 | /// While the function can handle multiple paragraphs, the text range |
||
| 2615 | /// should not arbitrarily split the middle of paragraphs. Otherwise the |
||
| 2616 | /// returned levels may be wrong, since the Bidi algorithm is meant to |
||
| 2617 | /// apply to the paragraph as a whole. |
||
| 2618 | /// </remarks> |
||
| 2619 | /// <remarks> |
||
| 2620 | /// Embedded control codes (LRE/LRO/RLE/RLO/PDF) are taken into account. |
||
| 2621 | /// </remarks> |
||
| 2622 | STDMETHOD(AnalyzeBidi)( |
||
| 2623 | IDWriteTextAnalysisSource* analysisSource, |
||
| 2624 | UINT32 textPosition, |
||
| 2625 | UINT32 textLength, |
||
| 2626 | IDWriteTextAnalysisSink* analysisSink |
||
| 2627 | ) PURE; |
||
| 2628 | |||
| 2629 | /// <summary> |
||
| 2630 | /// Analyzes a text range for spans where number substitution is applicable, |
||
| 2631 | /// reading attributes from the source and reporting substitutable ranges |
||
| 2632 | /// to the sink callback SetNumberSubstitution. |
||
| 2633 | /// </summary> |
||
| 2634 | /// <param name="analysisSource">Source object to analyze.</param> |
||
| 2635 | /// <param name="textPosition">Starting position within the source object.</param> |
||
| 2636 | /// <param name="textLength">Length to analyze.</param> |
||
| 2637 | /// <param name="analysisSink">Callback object.</param> |
||
| 2638 | /// <returns> |
||
| 2639 | /// Standard HRESULT error code. |
||
| 2640 | /// </returns> |
||
| 2641 | /// <remarks> |
||
| 2642 | /// While the function can handle multiple ranges of differing number |
||
| 2643 | /// substitutions, the text ranges should not arbitrarily split the |
||
| 2644 | /// middle of numbers. Otherwise it will treat the numbers separately |
||
| 2645 | /// and will not translate any intervening punctuation. |
||
| 2646 | /// </remarks> |
||
| 2647 | /// <remarks> |
||
| 2648 | /// Embedded control codes (LRE/LRO/RLE/RLO/PDF) are taken into account. |
||
| 2649 | /// </remarks> |
||
| 2650 | STDMETHOD(AnalyzeNumberSubstitution)( |
||
| 2651 | IDWriteTextAnalysisSource* analysisSource, |
||
| 2652 | UINT32 textPosition, |
||
| 2653 | UINT32 textLength, |
||
| 2654 | IDWriteTextAnalysisSink* analysisSink |
||
| 2655 | ) PURE; |
||
| 2656 | |||
| 2657 | /// <summary> |
||
| 2658 | /// Analyzes a text range for potential breakpoint opportunities, reading |
||
| 2659 | /// attributes from the source and reporting breakpoint opportunities to |
||
| 2660 | /// the sink callback SetLineBreakpoints. |
||
| 2661 | /// </summary> |
||
| 2662 | /// <param name="analysisSource">Source object to analyze.</param> |
||
| 2663 | /// <param name="textPosition">Starting position within the source object.</param> |
||
| 2664 | /// <param name="textLength">Length to analyze.</param> |
||
| 2665 | /// <param name="analysisSink">Callback object.</param> |
||
| 2666 | /// <returns> |
||
| 2667 | /// Standard HRESULT error code. |
||
| 2668 | /// </returns> |
||
| 2669 | /// <remarks> |
||
| 2670 | /// While the function can handle multiple paragraphs, the text range |
||
| 2671 | /// should not arbitrarily split the middle of paragraphs, unless the |
||
| 2672 | /// given text span is considered a whole unit. Otherwise the |
||
| 2673 | /// returned properties for the first and last characters will |
||
| 2674 | /// inappropriately allow breaks. |
||
| 2675 | /// </remarks> |
||
| 2676 | /// <remarks> |
||
| 2677 | /// Special cases include the first, last, and surrogate characters. Any |
||
| 2678 | /// text span is treated as if adjacent to inline objects on either side. |
||
| 2679 | /// So the rules with contingent-break opportunities are used, where the |
||
| 2680 | /// edge between text and inline objects is always treated as a potential |
||
| 2681 | /// break opportunity, dependent on any overriding rules of the adjacent |
||
| 2682 | /// objects to prohibit or force the break (see Unicode TR #14). |
||
| 2683 | /// Surrogate pairs never break between. |
||
| 2684 | /// </remarks> |
||
| 2685 | STDMETHOD(AnalyzeLineBreakpoints)( |
||
| 2686 | IDWriteTextAnalysisSource* analysisSource, |
||
| 2687 | UINT32 textPosition, |
||
| 2688 | UINT32 textLength, |
||
| 2689 | IDWriteTextAnalysisSink* analysisSink |
||
| 2690 | ) PURE; |
||
| 2691 | |||
| 2692 | /// <summary> |
||
| 2693 | /// Parses the input text string and maps it to the set of glyphs and associated glyph data |
||
| 2694 | /// according to the font and the writing system's rendering rules. |
||
| 2695 | /// </summary> |
||
| 2696 | /// <param name="textString">The string to convert to glyphs.</param> |
||
| 2697 | /// <param name="textLength">The length of textString.</param> |
||
| 2698 | /// <param name="fontFace">The font face to get glyphs from.</param> |
||
| 2699 | /// <param name="isSideways">Set to true if the text is intended to be |
||
| 2700 | /// drawn vertically.</param> |
||
| 2701 | /// <param name="isRightToLeft">Set to TRUE for right-to-left text.</param> |
||
| 2702 | /// <param name="scriptAnalysis">Script analysis result from AnalyzeScript.</param> |
||
| 2703 | /// <param name="localeName">The locale to use when selecting glyphs. |
||
| 2704 | /// e.g. the same character may map to different glyphs for ja-jp vs zh-chs. |
||
| 2705 | /// If this is NULL then the default mapping based on the script is used.</param> |
||
| 2706 | /// <param name="numberSubstitution">Optional number substitution which |
||
| 2707 | /// selects the appropriate glyphs for digits and related numeric characters, |
||
| 2708 | /// depending on the results obtained from AnalyzeNumberSubstitution. Passing |
||
| 2709 | /// null indicates that no substitution is needed and that the digits should |
||
| 2710 | /// receive nominal glyphs.</param> |
||
| 2711 | /// <param name="features">An array of pointers to the sets of typographic |
||
| 2712 | /// features to use in each feature range.</param> |
||
| 2713 | /// <param name="featureRangeLengths">The length of each feature range, in characters. |
||
| 2714 | /// The sum of all lengths should be equal to textLength.</param> |
||
| 2715 | /// <param name="featureRanges">The number of feature ranges.</param> |
||
| 2716 | /// <param name="maxGlyphCount">The maximum number of glyphs that can be |
||
| 2717 | /// returned.</param> |
||
| 2718 | /// <param name="clusterMap">The mapping from character ranges to glyph |
||
| 2719 | /// ranges.</param> |
||
| 2720 | /// <param name="textProps">Per-character output properties.</param> |
||
| 2721 | /// <param name="glyphIndices">Output glyph indices.</param> |
||
| 2722 | /// <param name="glyphProps">Per-glyph output properties.</param> |
||
| 2723 | /// <param name="actualGlyphCount">The actual number of glyphs returned if |
||
| 2724 | /// the call succeeds.</param> |
||
| 2725 | /// <returns> |
||
| 2726 | /// Standard HRESULT error code. |
||
| 2727 | /// </returns> |
||
| 2728 | /// <remarks> |
||
| 2729 | /// Note that the mapping from characters to glyphs is, in general, many- |
||
| 2730 | /// to-many. The recommended estimate for the per-glyph output buffers is |
||
| 2731 | /// (3 * textLength / 2 + 16). This is not guaranteed to be sufficient. |
||
| 2732 | /// |
||
| 2733 | /// The value of the actualGlyphCount parameter is only valid if the call |
||
| 2734 | /// succeeds. In the event that maxGlyphCount is not big enough |
||
| 2735 | /// E_NOT_SUFFICIENT_BUFFER, which is equivalent to HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER), |
||
| 2736 | /// will be returned. The application should allocate a larger buffer and try again. |
||
| 2737 | /// </remarks> |
||
| 2738 | STDMETHOD(GetGlyphs)( |
||
| 2739 | __in_ecount(textLength) WCHAR const* textString, |
||
| 2740 | UINT32 textLength, |
||
| 2741 | IDWriteFontFace* fontFace, |
||
| 2742 | BOOL isSideways, |
||
| 2743 | BOOL isRightToLeft, |
||
| 2744 | __in DWRITE_SCRIPT_ANALYSIS const* scriptAnalysis, |
||
| 2745 | __in_z_opt WCHAR const* localeName, |
||
| 2746 | __maybenull IDWriteNumberSubstitution* numberSubstitution, |
||
| 2747 | __in_ecount_opt(featureRanges) DWRITE_TYPOGRAPHIC_FEATURES const** features, |
||
| 2748 | __in_ecount_opt(featureRanges) UINT32 const* featureRangeLengths, |
||
| 2749 | UINT32 featureRanges, |
||
| 2750 | UINT32 maxGlyphCount, |
||
| 2751 | __out_ecount(textLength) UINT16* clusterMap, |
||
| 2752 | __out_ecount(textLength) DWRITE_SHAPING_TEXT_PROPERTIES* textProps, |
||
| 2753 | __out_ecount(maxGlyphCount) UINT16* glyphIndices, |
||
| 2754 | __out_ecount(maxGlyphCount) DWRITE_SHAPING_GLYPH_PROPERTIES* glyphProps, |
||
| 2755 | __out UINT32* actualGlyphCount |
||
| 2756 | ) PURE; |
||
| 2757 | |||
| 2758 | /// <summary> |
||
| 2759 | /// Place glyphs output from the GetGlyphs method according to the font |
||
| 2760 | /// and the writing system's rendering rules. |
||
| 2761 | /// </summary> |
||
| 2762 | /// <param name="textString">The original string the glyphs came from.</param> |
||
| 2763 | /// <param name="clusterMap">The mapping from character ranges to glyph |
||
| 2764 | /// ranges. Returned by GetGlyphs.</param> |
||
| 2765 | /// <param name="textProps">Per-character properties. Returned by |
||
| 2766 | /// GetGlyphs.</param> |
||
| 2767 | /// <param name="textLength">The length of textString.</param> |
||
| 2768 | /// <param name="glyphIndices">Glyph indices. See GetGlyphs</param> |
||
| 2769 | /// <param name="glyphProps">Per-glyph properties. See GetGlyphs</param> |
||
| 2770 | /// <param name="glyphCount">The number of glyphs.</param> |
||
| 2771 | /// <param name="fontFace">The font face the glyphs came from.</param> |
||
| 2772 | /// <param name="fontEmSize">Logical font size in DIP's.</param> |
||
| 2773 | /// <param name="isSideways">Set to true if the text is intended to be |
||
| 2774 | /// drawn vertically.</param> |
||
| 2775 | /// <param name="isRightToLeft">Set to TRUE for right-to-left text.</param> |
||
| 2776 | /// <param name="scriptAnalysis">Script analysis result from AnalyzeScript.</param> |
||
| 2777 | /// <param name="localeName">The locale to use when selecting glyphs. |
||
| 2778 | /// e.g. the same character may map to different glyphs for ja-jp vs zh-chs. |
||
| 2779 | /// If this is NULL then the default mapping based on the script is used.</param> |
||
| 2780 | /// <param name="features">An array of pointers to the sets of typographic |
||
| 2781 | /// features to use in each feature range.</param> |
||
| 2782 | /// <param name="featureRangeLengths">The length of each feature range, in characters. |
||
| 2783 | /// The sum of all lengths should be equal to textLength.</param> |
||
| 2784 | /// <param name="featureRanges">The number of feature ranges.</param> |
||
| 2785 | /// <param name="glyphAdvances">The advance width of each glyph.</param> |
||
| 2786 | /// <param name="glyphOffsets">The offset of the origin of each glyph.</param> |
||
| 2787 | /// <returns> |
||
| 2788 | /// Standard HRESULT error code. |
||
| 2789 | /// </returns> |
||
| 2790 | STDMETHOD(GetGlyphPlacements)( |
||
| 2791 | __in_ecount(textLength) WCHAR const* textString, |
||
| 2792 | __in_ecount(textLength) UINT16 const* clusterMap, |
||
| 2793 | __in_ecount(textLength) DWRITE_SHAPING_TEXT_PROPERTIES* textProps, |
||
| 2794 | UINT32 textLength, |
||
| 2795 | __in_ecount(glyphCount) UINT16 const* glyphIndices, |
||
| 2796 | __in_ecount(glyphCount) DWRITE_SHAPING_GLYPH_PROPERTIES const* glyphProps, |
||
| 2797 | UINT32 glyphCount, |
||
| 2798 | IDWriteFontFace * fontFace, |
||
| 2799 | FLOAT fontEmSize, |
||
| 2800 | BOOL isSideways, |
||
| 2801 | BOOL isRightToLeft, |
||
| 2802 | __in DWRITE_SCRIPT_ANALYSIS const* scriptAnalysis, |
||
| 2803 | __in_z_opt WCHAR const* localeName, |
||
| 2804 | __in_ecount_opt(featureRanges) DWRITE_TYPOGRAPHIC_FEATURES const** features, |
||
| 2805 | __in_ecount_opt(featureRanges) UINT32 const* featureRangeLengths, |
||
| 2806 | UINT32 featureRanges, |
||
| 2807 | __out_ecount(glyphCount) FLOAT* glyphAdvances, |
||
| 2808 | __out_ecount(glyphCount) DWRITE_GLYPH_OFFSET* glyphOffsets |
||
| 2809 | ) PURE; |
||
| 2810 | |||
| 2811 | /// <summary> |
||
| 2812 | /// Place glyphs output from the GetGlyphs method according to the font |
||
| 2813 | /// and the writing system's rendering rules. |
||
| 2814 | /// </summary> |
||
| 2815 | /// <param name="textString">The original string the glyphs came from.</param> |
||
| 2816 | /// <param name="clusterMap">The mapping from character ranges to glyph |
||
| 2817 | /// ranges. Returned by GetGlyphs.</param> |
||
| 2818 | /// <param name="textProps">Per-character properties. Returned by |
||
| 2819 | /// GetGlyphs.</param> |
||
| 2820 | /// <param name="textLength">The length of textString.</param> |
||
| 2821 | /// <param name="glyphIndices">Glyph indices. See GetGlyphs</param> |
||
| 2822 | /// <param name="glyphProps">Per-glyph properties. See GetGlyphs</param> |
||
| 2823 | /// <param name="glyphCount">The number of glyphs.</param> |
||
| 2824 | /// <param name="fontFace">The font face the glyphs came from.</param> |
||
| 2825 | /// <param name="fontEmSize">Logical font size in DIP's.</param> |
||
| 2826 | /// <param name="pixelsPerDip">Number of physical pixels per DIP. For example, if the DPI of the rendering surface is 96 this |
||
| 2827 | /// value is 1.0f. If the DPI is 120, this value is 120.0f/96.</param> |
||
| 2828 | /// <param name="transform">Optional transform applied to the glyphs and their positions. This transform is applied after the |
||
| 2829 | /// scaling specified by the font size and pixelsPerDip.</param> |
||
| 2830 | /// <param name="useGdiNatural"> |
||
| 2831 | /// When set to FALSE, the metrics are the same as the metrics of GDI aliased text. |
||
| 2832 | /// When set to TRUE, the metrics are the same as the metrics of text measured by GDI using a font |
||
| 2833 | /// created with CLEARTYPE_NATURAL_QUALITY. |
||
| 2834 | /// </param> |
||
| 2835 | /// <param name="isSideways">Set to true if the text is intended to be |
||
| 2836 | /// drawn vertically.</param> |
||
| 2837 | /// <param name="isRightToLeft">Set to TRUE for right-to-left text.</param> |
||
| 2838 | /// <param name="scriptAnalysis">Script analysis result from AnalyzeScript.</param> |
||
| 2839 | /// <param name="localeName">The locale to use when selecting glyphs. |
||
| 2840 | /// e.g. the same character may map to different glyphs for ja-jp vs zh-chs. |
||
| 2841 | /// If this is NULL then the default mapping based on the script is used.</param> |
||
| 2842 | /// <param name="features">An array of pointers to the sets of typographic |
||
| 2843 | /// features to use in each feature range.</param> |
||
| 2844 | /// <param name="featureRangeLengths">The length of each feature range, in characters. |
||
| 2845 | /// The sum of all lengths should be equal to textLength.</param> |
||
| 2846 | /// <param name="featureRanges">The number of feature ranges.</param> |
||
| 2847 | /// <param name="glyphAdvances">The advance width of each glyph.</param> |
||
| 2848 | /// <param name="glyphOffsets">The offset of the origin of each glyph.</param> |
||
| 2849 | /// <returns> |
||
| 2850 | /// Standard HRESULT error code. |
||
| 2851 | /// </returns> |
||
| 2852 | STDMETHOD(GetGdiCompatibleGlyphPlacements)( |
||
| 2853 | __in_ecount(textLength) WCHAR const* textString, |
||
| 2854 | __in_ecount(textLength) UINT16 const* clusterMap, |
||
| 2855 | __in_ecount(textLength) DWRITE_SHAPING_TEXT_PROPERTIES* textProps, |
||
| 2856 | UINT32 textLength, |
||
| 2857 | __in_ecount(glyphCount) UINT16 const* glyphIndices, |
||
| 2858 | __in_ecount(glyphCount) DWRITE_SHAPING_GLYPH_PROPERTIES const* glyphProps, |
||
| 2859 | UINT32 glyphCount, |
||
| 2860 | IDWriteFontFace * fontFace, |
||
| 2861 | FLOAT fontEmSize, |
||
| 2862 | FLOAT pixelsPerDip, |
||
| 2863 | __in_opt DWRITE_MATRIX const* transform, |
||
| 2864 | BOOL useGdiNatural, |
||
| 2865 | BOOL isSideways, |
||
| 2866 | BOOL isRightToLeft, |
||
| 2867 | __in DWRITE_SCRIPT_ANALYSIS const* scriptAnalysis, |
||
| 2868 | __in_z_opt WCHAR const* localeName, |
||
| 2869 | __in_ecount_opt(featureRanges) DWRITE_TYPOGRAPHIC_FEATURES const** features, |
||
| 2870 | __in_ecount_opt(featureRanges) UINT32 const* featureRangeLengths, |
||
| 2871 | UINT32 featureRanges, |
||
| 2872 | __out_ecount(glyphCount) FLOAT* glyphAdvances, |
||
| 2873 | __out_ecount(glyphCount) DWRITE_GLYPH_OFFSET* glyphOffsets |
||
| 2874 | ) PURE; |
||
| 2875 | }; |
||
| 2876 | |||
| 2877 | /// <summary> |
||
| 2878 | /// The DWRITE_GLYPH_RUN structure contains the information needed by renderers |
||
| 2879 | /// to draw glyph runs. All coordinates are in device independent pixels (DIPs). |
||
| 2880 | /// </summary> |
||
| 2881 | struct DWRITE_GLYPH_RUN |
||
| 2882 | { |
||
| 2883 | /// <summary> |
||
| 2884 | /// The physical font face to draw with. |
||
| 2885 | /// </summary> |
||
| 2886 | __notnull IDWriteFontFace* fontFace; |
||
| 2887 | |||
| 2888 | /// <summary> |
||
| 2889 | /// Logical size of the font in DIPs, not points (equals 1/96 inch). |
||
| 2890 | /// </summary> |
||
| 2891 | FLOAT fontEmSize; |
||
| 2892 | |||
| 2893 | /// <summary> |
||
| 2894 | /// The number of glyphs. |
||
| 2895 | /// </summary> |
||
| 2896 | UINT32 glyphCount; |
||
| 2897 | |||
| 2898 | /// <summary> |
||
| 2899 | /// The indices to render. |
||
| 2900 | /// </summary> |
||
| 2901 | __field_ecount(glyphCount) UINT16 const* glyphIndices; |
||
| 2902 | |||
| 2903 | /// <summary> |
||
| 2904 | /// Glyph advance widths. |
||
| 2905 | /// </summary> |
||
| 2906 | __field_ecount_opt(glyphCount) FLOAT const* glyphAdvances; |
||
| 2907 | |||
| 2908 | /// <summary> |
||
| 2909 | /// Glyph offsets. |
||
| 2910 | /// </summary> |
||
| 2911 | __field_ecount_opt(glyphCount) DWRITE_GLYPH_OFFSET const* glyphOffsets; |
||
| 2912 | |||
| 2913 | /// <summary> |
||
| 2914 | /// If true, specifies that glyphs are rotated 90 degrees to the left and |
||
| 2915 | /// vertical metrics are used. Vertical writing is achieved by specifying |
||
| 2916 | /// isSideways = true and rotating the entire run 90 degrees to the right |
||
| 2917 | /// via a rotate transform. |
||
| 2918 | /// </summary> |
||
| 2919 | BOOL isSideways; |
||
| 2920 | |||
| 2921 | /// <summary> |
||
| 2922 | /// The implicit resolved bidi level of the run. Odd levels indicate |
||
| 2923 | /// right-to-left languages like Hebrew and Arabic, while even levels |
||
| 2924 | /// indicate left-to-right languages like English and Japanese (when |
||
| 2925 | /// written horizontally). For right-to-left languages, the text origin |
||
| 2926 | /// is on the right, and text should be drawn to the left. |
||
| 2927 | /// </summary> |
||
| 2928 | UINT32 bidiLevel; |
||
| 2929 | }; |
||
| 2930 | |||
| 2931 | /// <summary> |
||
| 2932 | /// The DWRITE_GLYPH_RUN_DESCRIPTION structure contains additional properties |
||
| 2933 | /// related to those in DWRITE_GLYPH_RUN. |
||
| 2934 | /// </summary> |
||
| 2935 | struct DWRITE_GLYPH_RUN_DESCRIPTION |
||
| 2936 | { |
||
| 2937 | /// <summary> |
||
| 2938 | /// The locale name associated with this run. |
||
| 2939 | /// </summary> |
||
| 2940 | __nullterminated WCHAR const* localeName; |
||
| 2941 | |||
| 2942 | /// <summary> |
||
| 2943 | /// The text associated with the glyphs. |
||
| 2944 | /// </summary> |
||
| 2945 | __field_ecount(stringLength) WCHAR const* string; |
||
| 2946 | |||
| 2947 | /// <summary> |
||
| 2948 | /// The number of characters (UTF16 code-units). |
||
| 2949 | /// Note that this may be different than the number of glyphs. |
||
| 2950 | /// </summary> |
||
| 2951 | UINT32 stringLength; |
||
| 2952 | |||
| 2953 | /// <summary> |
||
| 2954 | /// An array of indices to the glyph indices array, of the first glyphs of |
||
| 2955 | /// all the glyph clusters of the glyphs to render. |
||
| 2956 | /// </summary> |
||
| 2957 | __field_ecount(stringLength) UINT16 const* clusterMap; |
||
| 2958 | |||
| 2959 | /// <summary> |
||
| 2960 | /// Corresponding text position in the original string |
||
| 2961 | /// this glyph run came from. |
||
| 2962 | /// </summary> |
||
| 2963 | UINT32 textPosition; |
||
| 2964 | }; |
||
| 2965 | |||
| 2966 | /// <summary> |
||
| 2967 | /// The DWRITE_UNDERLINE structure contains about the size and placement of |
||
| 2968 | /// underlines. All coordinates are in device independent pixels (DIPs). |
||
| 2969 | /// </summary> |
||
| 2970 | struct DWRITE_UNDERLINE |
||
| 2971 | { |
||
| 2972 | /// <summary> |
||
| 2973 | /// Width of the underline, measured parallel to the baseline. |
||
| 2974 | /// </summary> |
||
| 2975 | FLOAT width; |
||
| 2976 | |||
| 2977 | /// <summary> |
||
| 2978 | /// Thickness of the underline, measured perpendicular to the |
||
| 2979 | /// baseline. |
||
| 2980 | /// </summary> |
||
| 2981 | FLOAT thickness; |
||
| 2982 | |||
| 2983 | /// <summary> |
||
| 2984 | /// Offset of the underline from the baseline. |
||
| 2985 | /// A positive offset represents a position below the baseline and |
||
| 2986 | /// a negative offset is above. |
||
| 2987 | /// </summary> |
||
| 2988 | FLOAT offset; |
||
| 2989 | |||
| 2990 | /// <summary> |
||
| 2991 | /// Height of the tallest run where the underline applies. |
||
| 2992 | /// </summary> |
||
| 2993 | FLOAT runHeight; |
||
| 2994 | |||
| 2995 | /// <summary> |
||
| 2996 | /// Reading direction of the text associated with the underline. This |
||
| 2997 | /// value is used to interpret whether the width value runs horizontally |
||
| 2998 | /// or vertically. |
||
| 2999 | /// </summary> |
||
| 3000 | DWRITE_READING_DIRECTION readingDirection; |
||
| 3001 | |||
| 3002 | /// <summary> |
||
| 3003 | /// Flow direction of the text associated with the underline. This value |
||
| 3004 | /// is used to interpret whether the thickness value advances top to |
||
| 3005 | /// bottom, left to right, or right to left. |
||
| 3006 | /// </summary> |
||
| 3007 | DWRITE_FLOW_DIRECTION flowDirection; |
||
| 3008 | |||
| 3009 | /// <summary> |
||
| 3010 | /// Locale of the text the underline is being drawn under. Can be |
||
| 3011 | /// pertinent where the locale affects how the underline is drawn. |
||
| 3012 | /// For example, in vertical text, the underline belongs on the |
||
| 3013 | /// left for Chinese but on the right for Japanese. |
||
| 3014 | /// This choice is completely left up to higher levels. |
||
| 3015 | /// </summary> |
||
| 3016 | __nullterminated WCHAR const* localeName; |
||
| 3017 | |||
| 3018 | /// <summary> |
||
| 3019 | /// The measuring mode can be useful to the renderer to determine how |
||
| 3020 | /// underlines are rendered, e.g. rounding the thickness to a whole pixel |
||
| 3021 | /// in GDI-compatible modes. |
||
| 3022 | /// </summary> |
||
| 3023 | DWRITE_MEASURING_MODE measuringMode; |
||
| 3024 | }; |
||
| 3025 | |||
| 3026 | /// <summary> |
||
| 3027 | /// The DWRITE_STRIKETHROUGH structure contains about the size and placement of |
||
| 3028 | /// strickthroughs. All coordinates are in device independent pixels (DIPs). |
||
| 3029 | /// </summary> |
||
| 3030 | struct DWRITE_STRIKETHROUGH |
||
| 3031 | { |
||
| 3032 | /// <summary> |
||
| 3033 | /// Width of the strikethrough, measured parallel to the baseline. |
||
| 3034 | /// </summary> |
||
| 3035 | FLOAT width; |
||
| 3036 | |||
| 3037 | /// <summary> |
||
| 3038 | /// Thickness of the strikethrough, measured perpendicular to the |
||
| 3039 | /// baseline. |
||
| 3040 | /// </summary> |
||
| 3041 | FLOAT thickness; |
||
| 3042 | |||
| 3043 | /// <summary> |
||
| 3044 | /// Offset of the stikethrough from the baseline. |
||
| 3045 | /// A positive offset represents a position below the baseline and |
||
| 3046 | /// a negative offset is above. |
||
| 3047 | /// </summary> |
||
| 3048 | FLOAT offset; |
||
| 3049 | |||
| 3050 | /// <summary> |
||
| 3051 | /// Reading direction of the text associated with the strikethrough. This |
||
| 3052 | /// value is used to interpret whether the width value runs horizontally |
||
| 3053 | /// or vertically. |
||
| 3054 | /// </summary> |
||
| 3055 | DWRITE_READING_DIRECTION readingDirection; |
||
| 3056 | |||
| 3057 | /// <summary> |
||
| 3058 | /// Flow direction of the text associated with the strikethrough. This |
||
| 3059 | /// value is used to interpret whether the thickness value advances top to |
||
| 3060 | /// bottom, left to right, or right to left. |
||
| 3061 | /// </summary> |
||
| 3062 | DWRITE_FLOW_DIRECTION flowDirection; |
||
| 3063 | |||
| 3064 | /// <summary> |
||
| 3065 | /// Locale of the range. Can be pertinent where the locale affects the style. |
||
| 3066 | /// </summary> |
||
| 3067 | __nullterminated WCHAR const* localeName; |
||
| 3068 | |||
| 3069 | /// <summary> |
||
| 3070 | /// The measuring mode can be useful to the renderer to determine how |
||
| 3071 | /// underlines are rendered, e.g. rounding the thickness to a whole pixel |
||
| 3072 | /// in GDI-compatible modes. |
||
| 3073 | /// </summary> |
||
| 3074 | DWRITE_MEASURING_MODE measuringMode; |
||
| 3075 | }; |
||
| 3076 | |||
| 3077 | /// <summary> |
||
| 3078 | /// The DWRITE_LINE_METRICS structure contains information about a formatted |
||
| 3079 | /// line of text. |
||
| 3080 | /// </summary> |
||
| 3081 | struct DWRITE_LINE_METRICS |
||
| 3082 | { |
||
| 3083 | /// <summary> |
||
| 3084 | /// The number of total text positions in the line. |
||
| 3085 | /// This includes any trailing whitespace and newline characters. |
||
| 3086 | /// </summary> |
||
| 3087 | UINT32 length; |
||
| 3088 | |||
| 3089 | /// <summary> |
||
| 3090 | /// The number of whitespace positions at the end of the line. Newline |
||
| 3091 | /// sequences are considered whitespace. |
||
| 3092 | /// </summary> |
||
| 3093 | UINT32 trailingWhitespaceLength; |
||
| 3094 | |||
| 3095 | /// <summary> |
||
| 3096 | /// The number of characters in the newline sequence at the end of the line. |
||
| 3097 | /// If the count is zero, then the line was either wrapped or it is the |
||
| 3098 | /// end of the text. |
||
| 3099 | /// </summary> |
||
| 3100 | UINT32 newlineLength; |
||
| 3101 | |||
| 3102 | /// <summary> |
||
| 3103 | /// Height of the line as measured from top to bottom. |
||
| 3104 | /// </summary> |
||
| 3105 | FLOAT height; |
||
| 3106 | |||
| 3107 | /// <summary> |
||
| 3108 | /// Distance from the top of the line to its baseline. |
||
| 3109 | /// </summary> |
||
| 3110 | FLOAT baseline; |
||
| 3111 | |||
| 3112 | /// <summary> |
||
| 3113 | /// The line is trimmed. |
||
| 3114 | /// </summary> |
||
| 3115 | BOOL isTrimmed; |
||
| 3116 | }; |
||
| 3117 | |||
| 3118 | |||
| 3119 | /// <summary> |
||
| 3120 | /// The DWRITE_CLUSTER_METRICS structure contains information about a glyph cluster. |
||
| 3121 | /// </summary> |
||
| 3122 | struct DWRITE_CLUSTER_METRICS |
||
| 3123 | { |
||
| 3124 | /// <summary> |
||
| 3125 | /// The total advance width of all glyphs in the cluster. |
||
| 3126 | /// </summary> |
||
| 3127 | FLOAT width; |
||
| 3128 | |||
| 3129 | /// <summary> |
||
| 3130 | /// The number of text positions in the cluster. |
||
| 3131 | /// </summary> |
||
| 3132 | UINT16 length; |
||
| 3133 | |||
| 3134 | /// <summary> |
||
| 3135 | /// Indicate whether line can be broken right after the cluster. |
||
| 3136 | /// </summary> |
||
| 3137 | UINT16 canWrapLineAfter : 1; |
||
| 3138 | |||
| 3139 | /// <summary> |
||
| 3140 | /// Indicate whether the cluster corresponds to whitespace character. |
||
| 3141 | /// </summary> |
||
| 3142 | UINT16 isWhitespace : 1; |
||
| 3143 | |||
| 3144 | /// <summary> |
||
| 3145 | /// Indicate whether the cluster corresponds to a newline character. |
||
| 3146 | /// </summary> |
||
| 3147 | UINT16 isNewline : 1; |
||
| 3148 | |||
| 3149 | /// <summary> |
||
| 3150 | /// Indicate whether the cluster corresponds to soft hyphen character. |
||
| 3151 | /// </summary> |
||
| 3152 | UINT16 isSoftHyphen : 1; |
||
| 3153 | |||
| 3154 | /// <summary> |
||
| 3155 | /// Indicate whether the cluster is read from right to left. |
||
| 3156 | /// </summary> |
||
| 3157 | UINT16 isRightToLeft : 1; |
||
| 3158 | |||
| 3159 | UINT16 padding : 11; |
||
| 3160 | }; |
||
| 3161 | |||
| 3162 | |||
| 3163 | /// <summary> |
||
| 3164 | /// Overall metrics associated with text after layout. |
||
| 3165 | /// All coordinates are in device independent pixels (DIPs). |
||
| 3166 | /// </summary> |
||
| 3167 | struct DWRITE_TEXT_METRICS |
||
| 3168 | { |
||
| 3169 | /// <summary> |
||
| 3170 | /// Left-most point of formatted text relative to layout box |
||
| 3171 | /// (excluding any glyph overhang). |
||
| 3172 | /// </summary> |
||
| 3173 | FLOAT left; |
||
| 3174 | |||
| 3175 | /// <summary> |
||
| 3176 | /// Top-most point of formatted text relative to layout box |
||
| 3177 | /// (excluding any glyph overhang). |
||
| 3178 | /// </summary> |
||
| 3179 | FLOAT top; |
||
| 3180 | |||
| 3181 | /// <summary> |
||
| 3182 | /// The width of the formatted text ignoring trailing whitespace |
||
| 3183 | /// at the end of each line. |
||
| 3184 | /// </summary> |
||
| 3185 | FLOAT width; |
||
| 3186 | |||
| 3187 | /// <summary> |
||
| 3188 | /// The width of the formatted text taking into account the |
||
| 3189 | /// trailing whitespace at the end of each line. |
||
| 3190 | /// </summary> |
||
| 3191 | FLOAT widthIncludingTrailingWhitespace; |
||
| 3192 | |||
| 3193 | /// <summary> |
||
| 3194 | /// The height of the formatted text. The height of an empty string |
||
| 3195 | /// is determined by the size of the default font's line height. |
||
| 3196 | /// </summary> |
||
| 3197 | FLOAT height; |
||
| 3198 | |||
| 3199 | /// <summary> |
||
| 3200 | /// Initial width given to the layout. Depending on whether the text |
||
| 3201 | /// was wrapped or not, it can be either larger or smaller than the |
||
| 3202 | /// text content width. |
||
| 3203 | /// </summary> |
||
| 3204 | FLOAT layoutWidth; |
||
| 3205 | |||
| 3206 | /// <summary> |
||
| 3207 | /// Initial height given to the layout. Depending on the length of the |
||
| 3208 | /// text, it may be larger or smaller than the text content height. |
||
| 3209 | /// </summary> |
||
| 3210 | FLOAT layoutHeight; |
||
| 3211 | |||
| 3212 | /// <summary> |
||
| 3213 | /// The maximum reordering count of any line of text, used |
||
| 3214 | /// to calculate the most number of hit-testing boxes needed. |
||
| 3215 | /// If the layout has no bidirectional text or no text at all, |
||
| 3216 | /// the minimum level is 1. |
||
| 3217 | /// </summary> |
||
| 3218 | UINT32 maxBidiReorderingDepth; |
||
| 3219 | |||
| 3220 | /// <summary> |
||
| 3221 | /// Total number of lines. |
||
| 3222 | /// </summary> |
||
| 3223 | UINT32 lineCount; |
||
| 3224 | }; |
||
| 3225 | |||
| 3226 | |||
| 3227 | /// <summary> |
||
| 3228 | /// Properties describing the geometric measurement of an |
||
| 3229 | /// application-defined inline object. |
||
| 3230 | /// </summary> |
||
| 3231 | struct DWRITE_INLINE_OBJECT_METRICS |
||
| 3232 | { |
||
| 3233 | /// <summary> |
||
| 3234 | /// Width of the inline object. |
||
| 3235 | /// </summary> |
||
| 3236 | FLOAT width; |
||
| 3237 | |||
| 3238 | /// <summary> |
||
| 3239 | /// Height of the inline object as measured from top to bottom. |
||
| 3240 | /// </summary> |
||
| 3241 | FLOAT height; |
||
| 3242 | |||
| 3243 | /// <summary> |
||
| 3244 | /// Distance from the top of the object to the baseline where it is lined up with the adjacent text. |
||
| 3245 | /// If the baseline is at the bottom, baseline simply equals height. |
||
| 3246 | /// </summary> |
||
| 3247 | FLOAT baseline; |
||
| 3248 | |||
| 3249 | /// <summary> |
||
| 3250 | /// Flag indicating whether the object is to be placed upright or alongside the text baseline |
||
| 3251 | /// for vertical text. |
||
| 3252 | /// </summary> |
||
| 3253 | BOOL supportsSideways; |
||
| 3254 | }; |
||
| 3255 | |||
| 3256 | |||
| 3257 | /// <summary> |
||
| 3258 | /// The DWRITE_OVERHANG_METRICS structure holds how much any visible pixels |
||
| 3259 | /// (in DIPs) overshoot each side of the layout or inline objects. |
||
| 3260 | /// </summary> |
||
| 3261 | /// <remarks> |
||
| 3262 | /// Positive overhangs indicate that the visible area extends outside the layout |
||
| 3263 | /// box or inline object, while negative values mean there is whitespace inside. |
||
| 3264 | /// The returned values are unaffected by rendering transforms or pixel snapping. |
||
| 3265 | /// Additionally, they may not exactly match final target's pixel bounds after |
||
| 3266 | /// applying grid fitting and hinting. |
||
| 3267 | /// </remarks> |
||
| 3268 | struct DWRITE_OVERHANG_METRICS |
||
| 3269 | { |
||
| 3270 | /// <summary> |
||
| 3271 | /// The distance from the left-most visible DIP to its left alignment edge. |
||
| 3272 | /// </summary> |
||
| 3273 | FLOAT left; |
||
| 3274 | |||
| 3275 | /// <summary> |
||
| 3276 | /// The distance from the top-most visible DIP to its top alignment edge. |
||
| 3277 | /// </summary> |
||
| 3278 | FLOAT top; |
||
| 3279 | |||
| 3280 | /// <summary> |
||
| 3281 | /// The distance from the right-most visible DIP to its right alignment edge. |
||
| 3282 | /// </summary> |
||
| 3283 | FLOAT right; |
||
| 3284 | |||
| 3285 | /// <summary> |
||
| 3286 | /// The distance from the bottom-most visible DIP to its bottom alignment edge. |
||
| 3287 | /// </summary> |
||
| 3288 | FLOAT bottom; |
||
| 3289 | }; |
||
| 3290 | |||
| 3291 | |||
| 3292 | /// <summary> |
||
| 3293 | /// Geometry enclosing of text positions. |
||
| 3294 | /// </summary> |
||
| 3295 | struct DWRITE_HIT_TEST_METRICS |
||
| 3296 | { |
||
| 3297 | /// <summary> |
||
| 3298 | /// First text position within the geometry. |
||
| 3299 | /// </summary> |
||
| 3300 | UINT32 textPosition; |
||
| 3301 | |||
| 3302 | /// <summary> |
||
| 3303 | /// Number of text positions within the geometry. |
||
| 3304 | /// </summary> |
||
| 3305 | UINT32 length; |
||
| 3306 | |||
| 3307 | /// <summary> |
||
| 3308 | /// Left position of the top-left coordinate of the geometry. |
||
| 3309 | /// </summary> |
||
| 3310 | FLOAT left; |
||
| 3311 | |||
| 3312 | /// <summary> |
||
| 3313 | /// Top position of the top-left coordinate of the geometry. |
||
| 3314 | /// </summary> |
||
| 3315 | FLOAT top; |
||
| 3316 | |||
| 3317 | /// <summary> |
||
| 3318 | /// Geometry's width. |
||
| 3319 | /// </summary> |
||
| 3320 | FLOAT width; |
||
| 3321 | |||
| 3322 | /// <summary> |
||
| 3323 | /// Geometry's height. |
||
| 3324 | /// </summary> |
||
| 3325 | FLOAT height; |
||
| 3326 | |||
| 3327 | /// <summary> |
||
| 3328 | /// Bidi level of text positions enclosed within the geometry. |
||
| 3329 | /// </summary> |
||
| 3330 | UINT32 bidiLevel; |
||
| 3331 | |||
| 3332 | /// <summary> |
||
| 3333 | /// Geometry encloses text? |
||
| 3334 | /// </summary> |
||
| 3335 | BOOL isText; |
||
| 3336 | |||
| 3337 | /// <summary> |
||
| 3338 | /// Range is trimmed. |
||
| 3339 | /// </summary> |
||
| 3340 | BOOL isTrimmed; |
||
| 3341 | }; |
||
| 3342 | |||
| 3343 | |||
| 3344 | interface IDWriteTextRenderer; |
||
| 3345 | |||
| 3346 | |||
| 3347 | /// <summary> |
||
| 3348 | /// The IDWriteInlineObject interface wraps an application defined inline graphic, |
||
| 3349 | /// allowing DWrite to query metrics as if it was a glyph inline with the text. |
||
| 3350 | /// </summary> |
||
| 3351 | interface DWRITE_DECLARE_INTERFACE("8339FDE3-106F-47ab-8373-1C6295EB10B3") IDWriteInlineObject : public IUnknown |
||
| 3352 | { |
||
| 3353 | /// <summary> |
||
| 3354 | /// The application implemented rendering callback (IDWriteTextRenderer::DrawInlineObject) |
||
| 3355 | /// can use this to draw the inline object without needing to cast or query the object |
||
| 3356 | /// type. The text layout does not call this method directly. |
||
| 3357 | /// </summary> |
||
| 3358 | /// <param name="clientDrawingContext">The context passed to IDWriteTextLayout::Draw.</param> |
||
| 3359 | /// <param name="renderer">The renderer passed to IDWriteTextLayout::Draw as the object's containing parent.</param> |
||
| 3360 | /// <param name="originX">X-coordinate at the top-left corner of the inline object.</param> |
||
| 3361 | /// <param name="originY">Y-coordinate at the top-left corner of the inline object.</param> |
||
| 3362 | /// <param name="isSideways">The object should be drawn on its side.</param> |
||
| 3363 | /// <param name="isRightToLeft">The object is in an right-to-left context and should be drawn flipped.</param> |
||
| 3364 | /// <param name="clientDrawingEffect">The drawing effect set in IDWriteTextLayout::SetDrawingEffect.</param> |
||
| 3365 | /// <returns> |
||
| 3366 | /// Standard HRESULT error code. |
||
| 3367 | /// </returns> |
||
| 3368 | STDMETHOD(Draw)( |
||
| 3369 | __maybenull void* clientDrawingContext, |
||
| 3370 | IDWriteTextRenderer* renderer, |
||
| 3371 | FLOAT originX, |
||
| 3372 | FLOAT originY, |
||
| 3373 | BOOL isSideways, |
||
| 3374 | BOOL isRightToLeft, |
||
| 3375 | __maybenull IUnknown* clientDrawingEffect |
||
| 3376 | ) PURE; |
||
| 3377 | |||
| 3378 | /// <summary> |
||
| 3379 | /// TextLayout calls this callback function to get the measurement of the inline object. |
||
| 3380 | /// </summary> |
||
| 3381 | /// <param name="metrics">Returned metrics</param> |
||
| 3382 | /// <returns> |
||
| 3383 | /// Standard HRESULT error code. |
||
| 3384 | /// </returns> |
||
| 3385 | STDMETHOD(GetMetrics)( |
||
| 3386 | __out DWRITE_INLINE_OBJECT_METRICS* metrics |
||
| 3387 | ) PURE; |
||
| 3388 | |||
| 3389 | /// <summary> |
||
| 3390 | /// TextLayout calls this callback function to get the visible extents (in DIPs) of the inline object. |
||
| 3391 | /// In the case of a simple bitmap, with no padding and no overhang, all the overhangs will |
||
| 3392 | /// simply be zeroes. |
||
| 3393 | /// </summary> |
||
| 3394 | /// <param name="overhangs">Overshoot of visible extents (in DIPs) outside the object.</param> |
||
| 3395 | /// <returns> |
||
| 3396 | /// Standard HRESULT error code. |
||
| 3397 | /// </returns> |
||
| 3398 | /// <remarks> |
||
| 3399 | /// The overhangs should be returned relative to the reported size of the object |
||
| 3400 | /// (DWRITE_INLINE_OBJECT_METRICS::width/height), and should not be baseline |
||
| 3401 | /// adjusted. If you have an image that is actually 100x100 DIPs, but you want it |
||
| 3402 | /// slightly inset (perhaps it has a glow) by 20 DIPs on each side, you would |
||
| 3403 | /// return a width/height of 60x60 and four overhangs of 20 DIPs. |
||
| 3404 | /// </remarks> |
||
| 3405 | STDMETHOD(GetOverhangMetrics)( |
||
| 3406 | __out DWRITE_OVERHANG_METRICS* overhangs |
||
| 3407 | ) PURE; |
||
| 3408 | |||
| 3409 | /// <summary> |
||
| 3410 | /// Layout uses this to determine the line breaking behavior of the inline object |
||
| 3411 | /// amidst the text. |
||
| 3412 | /// </summary> |
||
| 3413 | /// <param name="breakConditionBefore">Line-breaking condition between the object and the content immediately preceding it.</param> |
||
| 3414 | /// <param name="breakConditionAfter" >Line-breaking condition between the object and the content immediately following it.</param> |
||
| 3415 | /// <returns> |
||
| 3416 | /// Standard HRESULT error code. |
||
| 3417 | /// </returns> |
||
| 3418 | STDMETHOD(GetBreakConditions)( |
||
| 3419 | __out DWRITE_BREAK_CONDITION* breakConditionBefore, |
||
| 3420 | __out DWRITE_BREAK_CONDITION* breakConditionAfter |
||
| 3421 | ) PURE; |
||
| 3422 | }; |
||
| 3423 | |||
| 3424 | /// <summary> |
||
| 3425 | /// The IDWritePixelSnapping interface defines the pixel snapping properties of a text renderer. |
||
| 3426 | /// </summary> |
||
| 3427 | interface DWRITE_DECLARE_INTERFACE("eaf3a2da-ecf4-4d24-b644-b34f6842024b") IDWritePixelSnapping : public IUnknown |
||
| 3428 | { |
||
| 3429 | /// <summary> |
||
| 3430 | /// Determines whether pixel snapping is disabled. The recommended default is FALSE, |
||
| 3431 | /// unless doing animation that requires subpixel vertical placement. |
||
| 3432 | /// </summary> |
||
| 3433 | /// <param name="clientDrawingContext">The context passed to IDWriteTextLayout::Draw.</param> |
||
| 3434 | /// <param name="isDisabled">Receives TRUE if pixel snapping is disabled or FALSE if it not.</param> |
||
| 3435 | /// <returns> |
||
| 3436 | /// Standard HRESULT error code. |
||
| 3437 | /// </returns> |
||
| 3438 | STDMETHOD(IsPixelSnappingDisabled)( |
||
| 3439 | __maybenull void* clientDrawingContext, |
||
| 3440 | __out BOOL* isDisabled |
||
| 3441 | ) PURE; |
||
| 3442 | |||
| 3443 | /// <summary> |
||
| 3444 | /// Gets the current transform that maps abstract coordinates to DIPs, |
||
| 3445 | /// which may disable pixel snapping upon any rotation or shear. |
||
| 3446 | /// </summary> |
||
| 3447 | /// <param name="clientDrawingContext">The context passed to IDWriteTextLayout::Draw.</param> |
||
| 3448 | /// <param name="transform">Receives the transform.</param> |
||
| 3449 | /// <returns> |
||
| 3450 | /// Standard HRESULT error code. |
||
| 3451 | /// </returns> |
||
| 3452 | STDMETHOD(GetCurrentTransform)( |
||
| 3453 | __maybenull void* clientDrawingContext, |
||
| 3454 | __out DWRITE_MATRIX* transform |
||
| 3455 | ) PURE; |
||
| 3456 | |||
| 3457 | /// <summary> |
||
| 3458 | /// Gets the number of physical pixels per DIP. A DIP (device-independent pixel) is 1/96 inch, |
||
| 3459 | /// so the pixelsPerDip value is the number of logical pixels per inch divided by 96 (yielding |
||
| 3460 | /// a value of 1 for 96 DPI and 1.25 for 120). |
||
| 3461 | /// </summary> |
||
| 3462 | /// <param name="clientDrawingContext">The context passed to IDWriteTextLayout::Draw.</param> |
||
| 3463 | /// <param name="pixelsPerDip">Receives the number of physical pixels per DIP.</param> |
||
| 3464 | /// <returns> |
||
| 3465 | /// Standard HRESULT error code. |
||
| 3466 | /// </returns> |
||
| 3467 | STDMETHOD(GetPixelsPerDip)( |
||
| 3468 | __maybenull void* clientDrawingContext, |
||
| 3469 | __out FLOAT* pixelsPerDip |
||
| 3470 | ) PURE; |
||
| 3471 | }; |
||
| 3472 | |||
| 3473 | /// <summary> |
||
| 3474 | /// The IDWriteTextLayout interface represents a set of application-defined |
||
| 3475 | /// callbacks that perform rendering of text, inline objects, and decorations |
||
| 3476 | /// such as underlines. |
||
| 3477 | /// </summary> |
||
| 3478 | interface DWRITE_DECLARE_INTERFACE("ef8a8135-5cc6-45fe-8825-c5a0724eb819") IDWriteTextRenderer : public IDWritePixelSnapping |
||
| 3479 | { |
||
| 3480 | /// <summary> |
||
| 3481 | /// IDWriteTextLayout::Draw calls this function to instruct the client to |
||
| 3482 | /// render a run of glyphs. |
||
| 3483 | /// </summary> |
||
| 3484 | /// <param name="clientDrawingContext">The context passed to |
||
| 3485 | /// IDWriteTextLayout::Draw.</param> |
||
| 3486 | /// <param name="baselineOriginX">X-coordinate of the baseline.</param> |
||
| 3487 | /// <param name="baselineOriginY">Y-coordinate of the baseline.</param> |
||
| 3488 | /// <param name="measuringMode">Specifies measuring method for glyphs in the run. |
||
| 3489 | /// Renderer implementations may choose different rendering modes for given measuring methods, |
||
| 3490 | /// but best results are seen when the rendering mode matches the corresponding measuring mode: |
||
| 3491 | /// DWRITE_RENDERING_MODE_CLEARTYPE_NATURAL for DWRITE_MEASURING_MODE_NATURAL |
||
| 3492 | /// DWRITE_RENDERING_MODE_CLEARTYPE_GDI_CLASSIC for DWRITE_MEASURING_MODE_GDI_CLASSIC |
||
| 3493 | /// DWRITE_RENDERING_MODE_CLEARTYPE_GDI_NATURAL for DWRITE_MEASURING_MODE_GDI_NATURAL |
||
| 3494 | /// </param> |
||
| 3495 | /// <param name="glyphRun">The glyph run to draw.</param> |
||
| 3496 | /// <param name="glyphRunDescription">Properties of the characters |
||
| 3497 | /// associated with this run.</param> |
||
| 3498 | /// <param name="clientDrawingEffect">The drawing effect set in |
||
| 3499 | /// IDWriteTextLayout::SetDrawingEffect.</param> |
||
| 3500 | /// <returns> |
||
| 3501 | /// Standard HRESULT error code. |
||
| 3502 | /// </returns> |
||
| 3503 | STDMETHOD(DrawGlyphRun)( |
||
| 3504 | __maybenull void* clientDrawingContext, |
||
| 3505 | FLOAT baselineOriginX, |
||
| 3506 | FLOAT baselineOriginY, |
||
| 3507 | DWRITE_MEASURING_MODE measuringMode, |
||
| 3508 | __in DWRITE_GLYPH_RUN const* glyphRun, |
||
| 3509 | __in DWRITE_GLYPH_RUN_DESCRIPTION const* glyphRunDescription, |
||
| 3510 | __maybenull IUnknown* clientDrawingEffect |
||
| 3511 | ) PURE; |
||
| 3512 | |||
| 3513 | /// <summary> |
||
| 3514 | /// IDWriteTextLayout::Draw calls this function to instruct the client to draw |
||
| 3515 | /// an underline. |
||
| 3516 | /// </summary> |
||
| 3517 | /// <param name="clientDrawingContext">The context passed to |
||
| 3518 | /// IDWriteTextLayout::Draw.</param> |
||
| 3519 | /// <param name="baselineOriginX">X-coordinate of the baseline.</param> |
||
| 3520 | /// <param name="baselineOriginY">Y-coordinate of the baseline.</param> |
||
| 3521 | /// <param name="underline">Underline logical information.</param> |
||
| 3522 | /// <param name="clientDrawingEffect">The drawing effect set in |
||
| 3523 | /// IDWriteTextLayout::SetDrawingEffect.</param> |
||
| 3524 | /// <returns> |
||
| 3525 | /// Standard HRESULT error code. |
||
| 3526 | /// </returns> |
||
| 3527 | /// <remarks> |
||
| 3528 | /// A single underline can be broken into multiple calls, depending on |
||
| 3529 | /// how the formatting changes attributes. If font sizes/styles change |
||
| 3530 | /// within an underline, the thickness and offset will be averaged |
||
| 3531 | /// weighted according to characters. |
||
| 3532 | /// To get the correct top coordinate of the underline rect, add underline::offset |
||
| 3533 | /// to the baseline's Y. Otherwise the underline will be immediately under the text. |
||
| 3534 | /// The x coordinate will always be passed as the left side, regardless |
||
| 3535 | /// of text directionality. This simplifies drawing and reduces the |
||
| 3536 | /// problem of round-off that could potentially cause gaps or a double |
||
| 3537 | /// stamped alpha blend. To avoid alpha overlap, round the end points |
||
| 3538 | /// to the nearest device pixel. |
||
| 3539 | /// </remarks> |
||
| 3540 | STDMETHOD(DrawUnderline)( |
||
| 3541 | __maybenull void* clientDrawingContext, |
||
| 3542 | FLOAT baselineOriginX, |
||
| 3543 | FLOAT baselineOriginY, |
||
| 3544 | __in DWRITE_UNDERLINE const* underline, |
||
| 3545 | __maybenull IUnknown* clientDrawingEffect |
||
| 3546 | ) PURE; |
||
| 3547 | |||
| 3548 | /// <summary> |
||
| 3549 | /// IDWriteTextLayout::Draw calls this function to instruct the client to draw |
||
| 3550 | /// a strikethrough. |
||
| 3551 | /// </summary> |
||
| 3552 | /// <param name="clientDrawingContext">The context passed to |
||
| 3553 | /// IDWriteTextLayout::Draw.</param> |
||
| 3554 | /// <param name="baselineOriginX">X-coordinate of the baseline.</param> |
||
| 3555 | /// <param name="baselineOriginY">Y-coordinate of the baseline.</param> |
||
| 3556 | /// <param name="strikethrough">Strikethrough logical information.</param> |
||
| 3557 | /// <param name="clientDrawingEffect">The drawing effect set in |
||
| 3558 | /// IDWriteTextLayout::SetDrawingEffect.</param> |
||
| 3559 | /// <returns> |
||
| 3560 | /// Standard HRESULT error code. |
||
| 3561 | /// </returns> |
||
| 3562 | /// <remarks> |
||
| 3563 | /// A single strikethrough can be broken into multiple calls, depending on |
||
| 3564 | /// how the formatting changes attributes. Strikethrough is not averaged |
||
| 3565 | /// across font sizes/styles changes. |
||
| 3566 | /// To get the correct top coordinate of the strikethrough rect, |
||
| 3567 | /// add strikethrough::offset to the baseline's Y. |
||
| 3568 | /// Like underlines, the x coordinate will always be passed as the left side, |
||
| 3569 | /// regardless of text directionality. |
||
| 3570 | /// </remarks> |
||
| 3571 | STDMETHOD(DrawStrikethrough)( |
||
| 3572 | __maybenull void* clientDrawingContext, |
||
| 3573 | FLOAT baselineOriginX, |
||
| 3574 | FLOAT baselineOriginY, |
||
| 3575 | __in DWRITE_STRIKETHROUGH const* strikethrough, |
||
| 3576 | __maybenull IUnknown* clientDrawingEffect |
||
| 3577 | ) PURE; |
||
| 3578 | |||
| 3579 | /// <summary> |
||
| 3580 | /// IDWriteTextLayout::Draw calls this application callback when it needs to |
||
| 3581 | /// draw an inline object. |
||
| 3582 | /// </summary> |
||
| 3583 | /// <param name="clientDrawingContext">The context passed to IDWriteTextLayout::Draw.</param> |
||
| 3584 | /// <param name="originX">X-coordinate at the top-left corner of the inline object.</param> |
||
| 3585 | /// <param name="originY">Y-coordinate at the top-left corner of the inline object.</param> |
||
| 3586 | /// <param name="inlineObject">The object set using IDWriteTextLayout::SetInlineObject.</param> |
||
| 3587 | /// <param name="isSideways">The object should be drawn on its side.</param> |
||
| 3588 | /// <param name="isRightToLeft">The object is in an right-to-left context and should be drawn flipped.</param> |
||
| 3589 | /// <param name="clientDrawingEffect">The drawing effect set in |
||
| 3590 | /// IDWriteTextLayout::SetDrawingEffect.</param> |
||
| 3591 | /// <returns> |
||
| 3592 | /// Standard HRESULT error code. |
||
| 3593 | /// </returns> |
||
| 3594 | /// <remarks> |
||
| 3595 | /// The right-to-left flag is a hint for those cases where it would look |
||
| 3596 | /// strange for the image to be shown normally (like an arrow pointing to |
||
| 3597 | /// right to indicate a submenu). |
||
| 3598 | /// </remarks> |
||
| 3599 | STDMETHOD(DrawInlineObject)( |
||
| 3600 | __maybenull void* clientDrawingContext, |
||
| 3601 | FLOAT originX, |
||
| 3602 | FLOAT originY, |
||
| 3603 | IDWriteInlineObject* inlineObject, |
||
| 3604 | BOOL isSideways, |
||
| 3605 | BOOL isRightToLeft, |
||
| 3606 | __maybenull IUnknown* clientDrawingEffect |
||
| 3607 | ) PURE; |
||
| 3608 | }; |
||
| 3609 | |||
| 3610 | /// <summary> |
||
| 3611 | /// The IDWriteTextLayout interface represents a block of text after it has |
||
| 3612 | /// been fully analyzed and formatted. |
||
| 3613 | /// |
||
| 3614 | /// All coordinates are in device independent pixels (DIPs). |
||
| 3615 | /// </summary> |
||
| 3616 | interface DWRITE_DECLARE_INTERFACE("53737037-6d14-410b-9bfe-0b182bb70961") IDWriteTextLayout : public IDWriteTextFormat |
||
| 3617 | { |
||
| 3618 | /// <summary> |
||
| 3619 | /// Set layout maximum width |
||
| 3620 | /// </summary> |
||
| 3621 | /// <param name="maxWidth">Layout maximum width</param> |
||
| 3622 | /// <returns> |
||
| 3623 | /// Standard HRESULT error code. |
||
| 3624 | /// </returns> |
||
| 3625 | STDMETHOD(SetMaxWidth)( |
||
| 3626 | FLOAT maxWidth |
||
| 3627 | ) PURE; |
||
| 3628 | |||
| 3629 | /// <summary> |
||
| 3630 | /// Set layout maximum height |
||
| 3631 | /// </summary> |
||
| 3632 | /// <param name="maxHeight">Layout maximum height</param> |
||
| 3633 | /// <returns> |
||
| 3634 | /// Standard HRESULT error code. |
||
| 3635 | /// </returns> |
||
| 3636 | STDMETHOD(SetMaxHeight)( |
||
| 3637 | FLOAT maxHeight |
||
| 3638 | ) PURE; |
||
| 3639 | |||
| 3640 | /// <summary> |
||
| 3641 | /// Set the font collection. |
||
| 3642 | /// </summary> |
||
| 3643 | /// <param name="fontCollection">The font collection to set</param> |
||
| 3644 | /// <param name="textRange">Text range to which this change applies.</param> |
||
| 3645 | /// <returns> |
||
| 3646 | /// Standard HRESULT error code. |
||
| 3647 | /// </returns> |
||
| 3648 | STDMETHOD(SetFontCollection)( |
||
| 3649 | IDWriteFontCollection* fontCollection, |
||
| 3650 | DWRITE_TEXT_RANGE textRange |
||
| 3651 | ) PURE; |
||
| 3652 | |||
| 3653 | /// <summary> |
||
| 3654 | /// Set null-terminated font family name. |
||
| 3655 | /// </summary> |
||
| 3656 | /// <param name="fontFamilyName">Font family name</param> |
||
| 3657 | /// <param name="textRange">Text range to which this change applies.</param> |
||
| 3658 | /// <returns> |
||
| 3659 | /// Standard HRESULT error code. |
||
| 3660 | /// </returns> |
||
| 3661 | STDMETHOD(SetFontFamilyName)( |
||
| 3662 | __in_z WCHAR const* fontFamilyName, |
||
| 3663 | DWRITE_TEXT_RANGE textRange |
||
| 3664 | ) PURE; |
||
| 3665 | |||
| 3666 | /// <summary> |
||
| 3667 | /// Set font weight. |
||
| 3668 | /// </summary> |
||
| 3669 | /// <param name="fontWeight">Font weight</param> |
||
| 3670 | /// <param name="textRange">Text range to which this change applies.</param> |
||
| 3671 | /// <returns> |
||
| 3672 | /// Standard HRESULT error code. |
||
| 3673 | /// </returns> |
||
| 3674 | STDMETHOD(SetFontWeight)( |
||
| 3675 | DWRITE_FONT_WEIGHT fontWeight, |
||
| 3676 | DWRITE_TEXT_RANGE textRange |
||
| 3677 | ) PURE; |
||
| 3678 | |||
| 3679 | /// <summary> |
||
| 3680 | /// Set font style. |
||
| 3681 | /// </summary> |
||
| 3682 | /// <param name="fontStyle">Font style</param> |
||
| 3683 | /// <param name="textRange">Text range to which this change applies.</param> |
||
| 3684 | /// <returns> |
||
| 3685 | /// Standard HRESULT error code. |
||
| 3686 | /// </returns> |
||
| 3687 | STDMETHOD(SetFontStyle)( |
||
| 3688 | DWRITE_FONT_STYLE fontStyle, |
||
| 3689 | DWRITE_TEXT_RANGE textRange |
||
| 3690 | ) PURE; |
||
| 3691 | |||
| 3692 | /// <summary> |
||
| 3693 | /// Set font stretch. |
||
| 3694 | /// </summary> |
||
| 3695 | /// <param name="fontStretch">font stretch</param> |
||
| 3696 | /// <param name="textRange">Text range to which this change applies.</param> |
||
| 3697 | /// <returns> |
||
| 3698 | /// Standard HRESULT error code. |
||
| 3699 | /// </returns> |
||
| 3700 | STDMETHOD(SetFontStretch)( |
||
| 3701 | DWRITE_FONT_STRETCH fontStretch, |
||
| 3702 | DWRITE_TEXT_RANGE textRange |
||
| 3703 | ) PURE; |
||
| 3704 | |||
| 3705 | /// <summary> |
||
| 3706 | /// Set font em height. |
||
| 3707 | /// </summary> |
||
| 3708 | /// <param name="fontSize">Font em height</param> |
||
| 3709 | /// <param name="textRange">Text range to which this change applies.</param> |
||
| 3710 | /// <returns> |
||
| 3711 | /// Standard HRESULT error code. |
||
| 3712 | /// </returns> |
||
| 3713 | STDMETHOD(SetFontSize)( |
||
| 3714 | FLOAT fontSize, |
||
| 3715 | DWRITE_TEXT_RANGE textRange |
||
| 3716 | ) PURE; |
||
| 3717 | |||
| 3718 | /// <summary> |
||
| 3719 | /// Set underline. |
||
| 3720 | /// </summary> |
||
| 3721 | /// <param name="hasUnderline">The Boolean flag indicates whether underline takes place</param> |
||
| 3722 | /// <param name="textRange">Text range to which this change applies.</param> |
||
| 3723 | /// <returns> |
||
| 3724 | /// Standard HRESULT error code. |
||
| 3725 | /// </returns> |
||
| 3726 | STDMETHOD(SetUnderline)( |
||
| 3727 | BOOL hasUnderline, |
||
| 3728 | DWRITE_TEXT_RANGE textRange |
||
| 3729 | ) PURE; |
||
| 3730 | |||
| 3731 | /// <summary> |
||
| 3732 | /// Set strikethrough. |
||
| 3733 | /// </summary> |
||
| 3734 | /// <param name="hasStrikethrough">The Boolean flag indicates whether strikethrough takes place</param> |
||
| 3735 | /// <param name="textRange">Text range to which this change applies.</param> |
||
| 3736 | /// <returns> |
||
| 3737 | /// Standard HRESULT error code. |
||
| 3738 | /// </returns> |
||
| 3739 | STDMETHOD(SetStrikethrough)( |
||
| 3740 | BOOL hasStrikethrough, |
||
| 3741 | DWRITE_TEXT_RANGE textRange |
||
| 3742 | ) PURE; |
||
| 3743 | |||
| 3744 | /// <summary> |
||
| 3745 | /// Set application-defined drawing effect. |
||
| 3746 | /// </summary> |
||
| 3747 | /// <param name="drawingEffect">Pointer to an application-defined drawing effect.</param> |
||
| 3748 | /// <param name="textRange">Text range to which this change applies.</param> |
||
| 3749 | /// <returns> |
||
| 3750 | /// Standard HRESULT error code. |
||
| 3751 | /// </returns> |
||
| 3752 | /// <remarks> |
||
| 3753 | /// This drawing effect is associated with the specified range and will be passed back |
||
| 3754 | /// to the application via the callback when the range is drawn at drawing time. |
||
| 3755 | /// </remarks> |
||
| 3756 | STDMETHOD(SetDrawingEffect)( |
||
| 3757 | IUnknown* drawingEffect, |
||
| 3758 | DWRITE_TEXT_RANGE textRange |
||
| 3759 | ) PURE; |
||
| 3760 | |||
| 3761 | /// <summary> |
||
| 3762 | /// Set inline object. |
||
| 3763 | /// </summary> |
||
| 3764 | /// <param name="inlineObject">Pointer to an application-implemented inline object.</param> |
||
| 3765 | /// <param name="textRange">Text range to which this change applies.</param> |
||
| 3766 | /// <returns> |
||
| 3767 | /// Standard HRESULT error code. |
||
| 3768 | /// </returns> |
||
| 3769 | /// <remarks> |
||
| 3770 | /// This inline object applies to the specified range and will be passed back |
||
| 3771 | /// to the application via the DrawInlineObject callback when the range is drawn. |
||
| 3772 | /// Any text in that range will be suppressed. |
||
| 3773 | /// </remarks> |
||
| 3774 | STDMETHOD(SetInlineObject)( |
||
| 3775 | IDWriteInlineObject* inlineObject, |
||
| 3776 | DWRITE_TEXT_RANGE textRange |
||
| 3777 | ) PURE; |
||
| 3778 | |||
| 3779 | /// <summary> |
||
| 3780 | /// Set font typography features. |
||
| 3781 | /// </summary> |
||
| 3782 | /// <param name="typography">Pointer to font typography setting.</param> |
||
| 3783 | /// <param name="textRange">Text range to which this change applies.</param> |
||
| 3784 | /// <returns> |
||
| 3785 | /// Standard HRESULT error code. |
||
| 3786 | /// </returns> |
||
| 3787 | STDMETHOD(SetTypography)( |
||
| 3788 | IDWriteTypography* typography, |
||
| 3789 | DWRITE_TEXT_RANGE textRange |
||
| 3790 | ) PURE; |
||
| 3791 | |||
| 3792 | /// <summary> |
||
| 3793 | /// Set locale name. |
||
| 3794 | /// </summary> |
||
| 3795 | /// <param name="localeName">Locale name</param> |
||
| 3796 | /// <param name="textRange">Text range to which this change applies.</param> |
||
| 3797 | /// <returns> |
||
| 3798 | /// Standard HRESULT error code. |
||
| 3799 | /// </returns> |
||
| 3800 | STDMETHOD(SetLocaleName)( |
||
| 3801 | __in_z WCHAR const* localeName, |
||
| 3802 | DWRITE_TEXT_RANGE textRange |
||
| 3803 | ) PURE; |
||
| 3804 | |||
| 3805 | /// <summary> |
||
| 3806 | /// Get layout maximum width |
||
| 3807 | /// </summary> |
||
| 3808 | STDMETHOD_(FLOAT, GetMaxWidth)() PURE; |
||
| 3809 | |||
| 3810 | /// <summary> |
||
| 3811 | /// Get layout maximum height |
||
| 3812 | /// </summary> |
||
| 3813 | STDMETHOD_(FLOAT, GetMaxHeight)() PURE; |
||
| 3814 | |||
| 3815 | /// <summary> |
||
| 3816 | /// Get the font collection where the current position is at. |
||
| 3817 | /// </summary> |
||
| 3818 | /// <param name="currentPosition">The current text position.</param> |
||
| 3819 | /// <param name="fontCollection">The current font collection</param> |
||
| 3820 | /// <param name="textRange">Text range to which this change applies.</param> |
||
| 3821 | /// <returns> |
||
| 3822 | /// Standard HRESULT error code. |
||
| 3823 | /// </returns> |
||
| 3824 | STDMETHOD(GetFontCollection)( |
||
| 3825 | UINT32 currentPosition, |
||
| 3826 | __out IDWriteFontCollection** fontCollection, |
||
| 3827 | __out_opt DWRITE_TEXT_RANGE* textRange = NULL |
||
| 3828 | ) PURE; |
||
| 3829 | |||
| 3830 | /// <summary> |
||
| 3831 | /// Get the length of the font family name where the current position is at. |
||
| 3832 | /// </summary> |
||
| 3833 | /// <param name="currentPosition">The current text position.</param> |
||
| 3834 | /// <param name="nameLength">Size of the character array in character count not including the terminated NULL character.</param> |
||
| 3835 | /// <param name="textRange">The position range of the current format.</param> |
||
| 3836 | /// <returns> |
||
| 3837 | /// Standard HRESULT error code. |
||
| 3838 | /// </returns> |
||
| 3839 | STDMETHOD(GetFontFamilyNameLength)( |
||
| 3840 | UINT32 currentPosition, |
||
| 3841 | __out UINT32* nameLength, |
||
| 3842 | __out_opt DWRITE_TEXT_RANGE* textRange = NULL |
||
| 3843 | ) PURE; |
||
| 3844 | |||
| 3845 | /// <summary> |
||
| 3846 | /// Copy the font family name where the current position is at. |
||
| 3847 | /// </summary> |
||
| 3848 | /// <param name="currentPosition">The current text position.</param> |
||
| 3849 | /// <param name="fontFamilyName">Character array that receives the current font family name</param> |
||
| 3850 | /// <param name="nameSize">Size of the character array in character count including the terminated NULL character.</param> |
||
| 3851 | /// <param name="textRange">The position range of the current format.</param> |
||
| 3852 | /// <returns> |
||
| 3853 | /// Standard HRESULT error code. |
||
| 3854 | /// </returns> |
||
| 3855 | STDMETHOD(GetFontFamilyName)( |
||
| 3856 | UINT32 currentPosition, |
||
| 3857 | __out_ecount_z(nameSize) WCHAR* fontFamilyName, |
||
| 3858 | UINT32 nameSize, |
||
| 3859 | __out_opt DWRITE_TEXT_RANGE* textRange = NULL |
||
| 3860 | ) PURE; |
||
| 3861 | |||
| 3862 | /// <summary> |
||
| 3863 | /// Get the font weight where the current position is at. |
||
| 3864 | /// </summary> |
||
| 3865 | /// <param name="currentPosition">The current text position.</param> |
||
| 3866 | /// <param name="fontWeight">The current font weight</param> |
||
| 3867 | /// <param name="textRange">The position range of the current format.</param> |
||
| 3868 | /// <returns> |
||
| 3869 | /// Standard HRESULT error code. |
||
| 3870 | /// </returns> |
||
| 3871 | STDMETHOD(GetFontWeight)( |
||
| 3872 | UINT32 currentPosition, |
||
| 3873 | __out DWRITE_FONT_WEIGHT* fontWeight, |
||
| 3874 | __out_opt DWRITE_TEXT_RANGE* textRange = NULL |
||
| 3875 | ) PURE; |
||
| 3876 | |||
| 3877 | /// <summary> |
||
| 3878 | /// Get the font style where the current position is at. |
||
| 3879 | /// </summary> |
||
| 3880 | /// <param name="currentPosition">The current text position.</param> |
||
| 3881 | /// <param name="fontStyle">The current font style</param> |
||
| 3882 | /// <param name="textRange">The position range of the current format.</param> |
||
| 3883 | /// <returns> |
||
| 3884 | /// Standard HRESULT error code. |
||
| 3885 | /// </returns> |
||
| 3886 | STDMETHOD(GetFontStyle)( |
||
| 3887 | UINT32 currentPosition, |
||
| 3888 | __out DWRITE_FONT_STYLE* fontStyle, |
||
| 3889 | __out_opt DWRITE_TEXT_RANGE* textRange = NULL |
||
| 3890 | ) PURE; |
||
| 3891 | |||
| 3892 | /// <summary> |
||
| 3893 | /// Get the font stretch where the current position is at. |
||
| 3894 | /// </summary> |
||
| 3895 | /// <param name="currentPosition">The current text position.</param> |
||
| 3896 | /// <param name="fontStretch">The current font stretch</param> |
||
| 3897 | /// <param name="textRange">The position range of the current format.</param> |
||
| 3898 | /// <returns> |
||
| 3899 | /// Standard HRESULT error code. |
||
| 3900 | /// </returns> |
||
| 3901 | STDMETHOD(GetFontStretch)( |
||
| 3902 | UINT32 currentPosition, |
||
| 3903 | __out DWRITE_FONT_STRETCH* fontStretch, |
||
| 3904 | __out_opt DWRITE_TEXT_RANGE* textRange = NULL |
||
| 3905 | ) PURE; |
||
| 3906 | |||
| 3907 | /// <summary> |
||
| 3908 | /// Get the font em height where the current position is at. |
||
| 3909 | /// </summary> |
||
| 3910 | /// <param name="currentPosition">The current text position.</param> |
||
| 3911 | /// <param name="fontSize">The current font em height</param> |
||
| 3912 | /// <param name="textRange">The position range of the current format.</param> |
||
| 3913 | /// <returns> |
||
| 3914 | /// Standard HRESULT error code. |
||
| 3915 | /// </returns> |
||
| 3916 | STDMETHOD(GetFontSize)( |
||
| 3917 | UINT32 currentPosition, |
||
| 3918 | __out FLOAT* fontSize, |
||
| 3919 | __out_opt DWRITE_TEXT_RANGE* textRange = NULL |
||
| 3920 | ) PURE; |
||
| 3921 | |||
| 3922 | /// <summary> |
||
| 3923 | /// Get the underline presence where the current position is at. |
||
| 3924 | /// </summary> |
||
| 3925 | /// <param name="currentPosition">The current text position.</param> |
||
| 3926 | /// <param name="hasUnderline">The Boolean flag indicates whether text is underlined.</param> |
||
| 3927 | /// <param name="textRange">The position range of the current format.</param> |
||
| 3928 | /// <returns> |
||
| 3929 | /// Standard HRESULT error code. |
||
| 3930 | /// </returns> |
||
| 3931 | STDMETHOD(GetUnderline)( |
||
| 3932 | UINT32 currentPosition, |
||
| 3933 | __out BOOL* hasUnderline, |
||
| 3934 | __out_opt DWRITE_TEXT_RANGE* textRange = NULL |
||
| 3935 | ) PURE; |
||
| 3936 | |||
| 3937 | /// <summary> |
||
| 3938 | /// Get the strikethrough presence where the current position is at. |
||
| 3939 | /// </summary> |
||
| 3940 | /// <param name="currentPosition">The current text position.</param> |
||
| 3941 | /// <param name="hasStrikethrough">The Boolean flag indicates whether text has strikethrough.</param> |
||
| 3942 | /// <param name="textRange">The position range of the current format.</param> |
||
| 3943 | /// <returns> |
||
| 3944 | /// Standard HRESULT error code. |
||
| 3945 | /// </returns> |
||
| 3946 | STDMETHOD(GetStrikethrough)( |
||
| 3947 | UINT32 currentPosition, |
||
| 3948 | __out BOOL* hasStrikethrough, |
||
| 3949 | __out_opt DWRITE_TEXT_RANGE* textRange = NULL |
||
| 3950 | ) PURE; |
||
| 3951 | |||
| 3952 | /// <summary> |
||
| 3953 | /// Get the application-defined drawing effect where the current position is at. |
||
| 3954 | /// </summary> |
||
| 3955 | /// <param name="currentPosition">The current text position.</param> |
||
| 3956 | /// <param name="drawingEffect">The current application-defined drawing effect.</param> |
||
| 3957 | /// <param name="textRange">The position range of the current format.</param> |
||
| 3958 | /// <returns> |
||
| 3959 | /// Standard HRESULT error code. |
||
| 3960 | /// </returns> |
||
| 3961 | STDMETHOD(GetDrawingEffect)( |
||
| 3962 | UINT32 currentPosition, |
||
| 3963 | __out IUnknown** drawingEffect, |
||
| 3964 | __out_opt DWRITE_TEXT_RANGE* textRange = NULL |
||
| 3965 | ) PURE; |
||
| 3966 | |||
| 3967 | /// <summary> |
||
| 3968 | /// Get the inline object at the given position. |
||
| 3969 | /// </summary> |
||
| 3970 | /// <param name="currentPosition">The given text position.</param> |
||
| 3971 | /// <param name="inlineObject">The inline object.</param> |
||
| 3972 | /// <param name="textRange">The position range of the current format.</param> |
||
| 3973 | /// <returns> |
||
| 3974 | /// Standard HRESULT error code. |
||
| 3975 | /// </returns> |
||
| 3976 | STDMETHOD(GetInlineObject)( |
||
| 3977 | UINT32 currentPosition, |
||
| 3978 | __out IDWriteInlineObject** inlineObject, |
||
| 3979 | __out_opt DWRITE_TEXT_RANGE* textRange = NULL |
||
| 3980 | ) PURE; |
||
| 3981 | |||
| 3982 | /// <summary> |
||
| 3983 | /// Get the typography setting where the current position is at. |
||
| 3984 | /// </summary> |
||
| 3985 | /// <param name="currentPosition">The current text position.</param> |
||
| 3986 | /// <param name="typography">The current typography setting.</param> |
||
| 3987 | /// <param name="textRange">The position range of the current format.</param> |
||
| 3988 | /// <returns> |
||
| 3989 | /// Standard HRESULT error code. |
||
| 3990 | /// </returns> |
||
| 3991 | STDMETHOD(GetTypography)( |
||
| 3992 | UINT32 currentPosition, |
||
| 3993 | __out IDWriteTypography** typography, |
||
| 3994 | __out_opt DWRITE_TEXT_RANGE* textRange = NULL |
||
| 3995 | ) PURE; |
||
| 3996 | |||
| 3997 | /// <summary> |
||
| 3998 | /// Get the length of the locale name where the current position is at. |
||
| 3999 | /// </summary> |
||
| 4000 | /// <param name="currentPosition">The current text position.</param> |
||
| 4001 | /// <param name="nameLength">Size of the character array in character count not including the terminated NULL character.</param> |
||
| 4002 | /// <param name="textRange">The position range of the current format.</param> |
||
| 4003 | /// <returns> |
||
| 4004 | /// Standard HRESULT error code. |
||
| 4005 | /// </returns> |
||
| 4006 | STDMETHOD(GetLocaleNameLength)( |
||
| 4007 | UINT32 currentPosition, |
||
| 4008 | __out UINT32* nameLength, |
||
| 4009 | __out_opt DWRITE_TEXT_RANGE* textRange = NULL |
||
| 4010 | ) PURE; |
||
| 4011 | |||
| 4012 | /// <summary> |
||
| 4013 | /// Get the locale name where the current position is at. |
||
| 4014 | /// </summary> |
||
| 4015 | /// <param name="currentPosition">The current text position.</param> |
||
| 4016 | /// <param name="localeName">Character array that receives the current locale name</param> |
||
| 4017 | /// <param name="nameSize">Size of the character array in character count including the terminated NULL character.</param> |
||
| 4018 | /// <param name="textRange">The position range of the current format.</param> |
||
| 4019 | /// <returns> |
||
| 4020 | /// Standard HRESULT error code. |
||
| 4021 | /// </returns> |
||
| 4022 | STDMETHOD(GetLocaleName)( |
||
| 4023 | UINT32 currentPosition, |
||
| 4024 | __out_ecount_z(nameSize) WCHAR* localeName, |
||
| 4025 | UINT32 nameSize, |
||
| 4026 | __out_opt DWRITE_TEXT_RANGE* textRange = NULL |
||
| 4027 | ) PURE; |
||
| 4028 | |||
| 4029 | /// <summary> |
||
| 4030 | /// Initiate drawing of the text. |
||
| 4031 | /// </summary> |
||
| 4032 | /// <param name="clientDrawingContext">An application defined value |
||
| 4033 | /// included in rendering callbacks.</param> |
||
| 4034 | /// <param name="renderer">The set of application-defined callbacks that do |
||
| 4035 | /// the actual rendering.</param> |
||
| 4036 | /// <param name="originX">X-coordinate of the layout's left side.</param> |
||
| 4037 | /// <param name="originY">Y-coordinate of the layout's top side.</param> |
||
| 4038 | /// <returns> |
||
| 4039 | /// Standard HRESULT error code. |
||
| 4040 | /// </returns> |
||
| 4041 | STDMETHOD(Draw)( |
||
| 4042 | __maybenull void* clientDrawingContext, |
||
| 4043 | IDWriteTextRenderer* renderer, |
||
| 4044 | FLOAT originX, |
||
| 4045 | FLOAT originY |
||
| 4046 | ) PURE; |
||
| 4047 | |||
| 4048 | /// <summary> |
||
| 4049 | /// GetLineMetrics returns properties of each line. |
||
| 4050 | /// </summary> |
||
| 4051 | /// <param name="lineMetrics">The array to fill with line information.</param> |
||
| 4052 | /// <param name="maxLineCount">The maximum size of the lineMetrics array.</param> |
||
| 4053 | /// <param name="actualLineCount">The actual size of the lineMetrics |
||
| 4054 | /// array that is needed.</param> |
||
| 4055 | /// <returns> |
||
| 4056 | /// Standard HRESULT error code. |
||
| 4057 | /// </returns> |
||
| 4058 | /// <remarks> |
||
| 4059 | /// If maxLineCount is not large enough E_NOT_SUFFICIENT_BUFFER, |
||
| 4060 | /// which is equivalent to HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER), |
||
| 4061 | /// is returned and *actualLineCount is set to the number of lines |
||
| 4062 | /// needed. |
||
| 4063 | /// </remarks> |
||
| 4064 | STDMETHOD(GetLineMetrics)( |
||
| 4065 | __out_ecount_opt(maxLineCount) DWRITE_LINE_METRICS* lineMetrics, |
||
| 4066 | UINT32 maxLineCount, |
||
| 4067 | __out UINT32* actualLineCount |
||
| 4068 | ) PURE; |
||
| 4069 | |||
| 4070 | /// <summary> |
||
| 4071 | /// GetMetrics retrieves overall metrics for the formatted string. |
||
| 4072 | /// </summary> |
||
| 4073 | /// <param name="textMetrics">The returned metrics.</param> |
||
| 4074 | /// <returns> |
||
| 4075 | /// Standard HRESULT error code. |
||
| 4076 | /// </returns> |
||
| 4077 | /// <remarks> |
||
| 4078 | /// Drawing effects like underline and strikethrough do not contribute |
||
| 4079 | /// to the text size, which is essentially the sum of advance widths and |
||
| 4080 | /// line heights. Additionally, visible swashes and other graphic |
||
| 4081 | /// adornments may extend outside the returned width and height. |
||
| 4082 | /// </remarks> |
||
| 4083 | STDMETHOD(GetMetrics)( |
||
| 4084 | __out DWRITE_TEXT_METRICS* textMetrics |
||
| 4085 | ) PURE; |
||
| 4086 | |||
| 4087 | /// <summary> |
||
| 4088 | /// GetOverhangMetrics returns the overhangs (in DIPs) of the layout and all |
||
| 4089 | /// objects contained in it, including text glyphs and inline objects. |
||
| 4090 | /// </summary> |
||
| 4091 | /// <param name="overhangs">Overshoots of visible extents (in DIPs) outside the layout.</param> |
||
| 4092 | /// <returns> |
||
| 4093 | /// Standard HRESULT error code. |
||
| 4094 | /// </returns> |
||
| 4095 | /// <remarks> |
||
| 4096 | /// Any underline and strikethrough do not contribute to the black box |
||
| 4097 | /// determination, since these are actually drawn by the renderer, which |
||
| 4098 | /// is allowed to draw them in any variety of styles. |
||
| 4099 | /// </remarks> |
||
| 4100 | STDMETHOD(GetOverhangMetrics)( |
||
| 4101 | __out DWRITE_OVERHANG_METRICS* overhangs |
||
| 4102 | ) PURE; |
||
| 4103 | |||
| 4104 | /// <summary> |
||
| 4105 | /// Retrieve logical properties and measurement of each cluster. |
||
| 4106 | /// </summary> |
||
| 4107 | /// <param name="clusterMetrics">The array to fill with cluster information.</param> |
||
| 4108 | /// <param name="maxClusterCount">The maximum size of the clusterMetrics array.</param> |
||
| 4109 | /// <param name="actualClusterCount">The actual size of the clusterMetrics array that is needed.</param> |
||
| 4110 | /// <returns> |
||
| 4111 | /// Standard HRESULT error code. |
||
| 4112 | /// </returns> |
||
| 4113 | /// <remarks> |
||
| 4114 | /// If maxClusterCount is not large enough E_NOT_SUFFICIENT_BUFFER, |
||
| 4115 | /// which is equivalent to HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER), |
||
| 4116 | /// is returned and *actualClusterCount is set to the number of clusters |
||
| 4117 | /// needed. |
||
| 4118 | /// </remarks> |
||
| 4119 | STDMETHOD(GetClusterMetrics)( |
||
| 4120 | __out_ecount_opt(maxClusterCount) DWRITE_CLUSTER_METRICS* clusterMetrics, |
||
| 4121 | UINT32 maxClusterCount, |
||
| 4122 | __out UINT32* actualClusterCount |
||
| 4123 | ) PURE; |
||
| 4124 | |||
| 4125 | /// <summary> |
||
| 4126 | /// Determines the minimum possible width the layout can be set to without |
||
| 4127 | /// emergency breaking between the characters of whole words. |
||
| 4128 | /// </summary> |
||
| 4129 | /// <param name="minWidth">Minimum width.</param> |
||
| 4130 | /// <returns> |
||
| 4131 | /// Standard HRESULT error code. |
||
| 4132 | /// </returns> |
||
| 4133 | STDMETHOD(DetermineMinWidth)( |
||
| 4134 | __out FLOAT* minWidth |
||
| 4135 | ) PURE; |
||
| 4136 | |||
| 4137 | /// <summary> |
||
| 4138 | /// Given a coordinate (in DIPs) relative to the top-left of the layout box, |
||
| 4139 | /// this returns the corresponding hit-test metrics of the text string where |
||
| 4140 | /// the hit-test has occurred. This is useful for mapping mouse clicks to caret |
||
| 4141 | /// positions. When the given coordinate is outside the text string, the function |
||
| 4142 | /// sets the output value *isInside to false but returns the nearest character |
||
| 4143 | /// position. |
||
| 4144 | /// </summary> |
||
| 4145 | /// <param name="pointX">X coordinate to hit-test, relative to the top-left location of the layout box.</param> |
||
| 4146 | /// <param name="pointY">Y coordinate to hit-test, relative to the top-left location of the layout box.</param> |
||
| 4147 | /// <param name="isTrailingHit">Output flag indicating whether the hit-test location is at the leading or the trailing |
||
| 4148 | /// side of the character. When the output *isInside value is set to false, this value is set according to the output |
||
| 4149 | /// *position value to represent the edge closest to the hit-test location. </param> |
||
| 4150 | /// <param name="isInside">Output flag indicating whether the hit-test location is inside the text string. |
||
| 4151 | /// When false, the position nearest the text's edge is returned.</param> |
||
| 4152 | /// <param name="hitTestMetrics">Output geometry fully enclosing the hit-test location. When the output *isInside value |
||
| 4153 | /// is set to false, this structure represents the geometry enclosing the edge closest to the hit-test location.</param> |
||
| 4154 | /// <returns> |
||
| 4155 | /// Standard HRESULT error code. |
||
| 4156 | /// </returns> |
||
| 4157 | STDMETHOD(HitTestPoint)( |
||
| 4158 | FLOAT pointX, |
||
| 4159 | FLOAT pointY, |
||
| 4160 | __out BOOL* isTrailingHit, |
||
| 4161 | __out BOOL* isInside, |
||
| 4162 | __out DWRITE_HIT_TEST_METRICS* hitTestMetrics |
||
| 4163 | ) PURE; |
||
| 4164 | |||
| 4165 | /// <summary> |
||
| 4166 | /// Given a text position and whether the caret is on the leading or trailing |
||
| 4167 | /// edge of that position, this returns the corresponding coordinate (in DIPs) |
||
| 4168 | /// relative to the top-left of the layout box. This is most useful for drawing |
||
| 4169 | /// the caret's current position, but it could also be used to anchor an IME to the |
||
| 4170 | /// typed text or attach a floating menu near the point of interest. It may also be |
||
| 4171 | /// used to programmatically obtain the geometry of a particular text position |
||
| 4172 | /// for UI automation. |
||
| 4173 | /// </summary> |
||
| 4174 | /// <param name="textPosition">Text position to get the coordinate of.</param> |
||
| 4175 | /// <param name="isTrailingHit">Flag indicating whether the location is of the leading or the trailing side of the specified text position. </param> |
||
| 4176 | /// <param name="pointX">Output caret X, relative to the top-left of the layout box.</param> |
||
| 4177 | /// <param name="pointY">Output caret Y, relative to the top-left of the layout box.</param> |
||
| 4178 | /// <param name="hitTestMetrics">Output geometry fully enclosing the specified text position.</param> |
||
| 4179 | /// <returns> |
||
| 4180 | /// Standard HRESULT error code. |
||
| 4181 | /// </returns> |
||
| 4182 | /// <remarks> |
||
| 4183 | /// When drawing a caret at the returned X,Y, it should should be centered on X |
||
| 4184 | /// and drawn from the Y coordinate down. The height will be the size of the |
||
| 4185 | /// hit-tested text (which can vary in size within a line). |
||
| 4186 | /// Reading direction also affects which side of the character the caret is drawn. |
||
| 4187 | /// However, the returned X coordinate will be correct for either case. |
||
| 4188 | /// You can get a text length back that is larger than a single character. |
||
| 4189 | /// This happens for complex scripts when multiple characters form a single cluster, |
||
| 4190 | /// when diacritics join their base character, or when you test a surrogate pair. |
||
| 4191 | /// </remarks> |
||
| 4192 | STDMETHOD(HitTestTextPosition)( |
||
| 4193 | UINT32 textPosition, |
||
| 4194 | BOOL isTrailingHit, |
||
| 4195 | __out FLOAT* pointX, |
||
| 4196 | __out FLOAT* pointY, |
||
| 4197 | __out DWRITE_HIT_TEST_METRICS* hitTestMetrics |
||
| 4198 | ) PURE; |
||
| 4199 | |||
| 4200 | /// <summary> |
||
| 4201 | /// The application calls this function to get a set of hit-test metrics |
||
| 4202 | /// corresponding to a range of text positions. The main usage for this |
||
| 4203 | /// is to draw highlighted selection of the text string. |
||
| 4204 | /// |
||
| 4205 | /// The function returns E_NOT_SUFFICIENT_BUFFER, which is equivalent to |
||
| 4206 | /// HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER), when the buffer size of |
||
| 4207 | /// hitTestMetrics is too small to hold all the regions calculated by the |
||
| 4208 | /// function. In such situation, the function sets the output value |
||
| 4209 | /// *actualHitTestMetricsCount to the number of geometries calculated. |
||
| 4210 | /// The application is responsible to allocate a new buffer of greater |
||
| 4211 | /// size and call the function again. |
||
| 4212 | /// |
||
| 4213 | /// A good value to use as an initial value for maxHitTestMetricsCount may |
||
| 4214 | /// be calculated from the following equation: |
||
| 4215 | /// maxHitTestMetricsCount = lineCount * maxBidiReorderingDepth |
||
| 4216 | /// |
||
| 4217 | /// where lineCount is obtained from the value of the output argument |
||
| 4218 | /// *actualLineCount from the function IDWriteTextLayout::GetLineMetrics, |
||
| 4219 | /// and the maxBidiReorderingDepth value from the DWRITE_TEXT_METRICS |
||
| 4220 | /// structure of the output argument *textMetrics from the function |
||
| 4221 | /// IDWriteFactory::CreateTextLayout. |
||
| 4222 | /// </summary> |
||
| 4223 | /// <param name="textPosition">First text position of the specified range.</param> |
||
| 4224 | /// <param name="textLength">Number of positions of the specified range.</param> |
||
| 4225 | /// <param name="originX">Offset of the X origin (left of the layout box) which is added to each of the hit-test metrics returned.</param> |
||
| 4226 | /// <param name="originY">Offset of the Y origin (top of the layout box) which is added to each of the hit-test metrics returned.</param> |
||
| 4227 | /// <param name="hitTestMetrics">Pointer to a buffer of the output geometry fully enclosing the specified position range.</param> |
||
| 4228 | /// <param name="maxHitTestMetricsCount">Maximum number of distinct metrics it could hold in its buffer memory.</param> |
||
| 4229 | /// <param name="actualHitTestMetricsCount">Actual number of metrics returned or needed.</param> |
||
| 4230 | /// <returns> |
||
| 4231 | /// Standard HRESULT error code. |
||
| 4232 | /// </returns> |
||
| 4233 | /// <remarks> |
||
| 4234 | /// There are no gaps in the returned metrics. While there could be visual gaps, |
||
| 4235 | /// depending on bidi ordering, each range is contiguous and reports all the text, |
||
| 4236 | /// including any hidden characters and trimmed text. |
||
| 4237 | /// The height of each returned range will be the same within each line, regardless |
||
| 4238 | /// of how the font sizes vary. |
||
| 4239 | /// </remarks> |
||
| 4240 | STDMETHOD(HitTestTextRange)( |
||
| 4241 | UINT32 textPosition, |
||
| 4242 | UINT32 textLength, |
||
| 4243 | FLOAT originX, |
||
| 4244 | FLOAT originY, |
||
| 4245 | __out_ecount_opt(maxHitTestMetricsCount) DWRITE_HIT_TEST_METRICS* hitTestMetrics, |
||
| 4246 | UINT32 maxHitTestMetricsCount, |
||
| 4247 | __out UINT32* actualHitTestMetricsCount |
||
| 4248 | ) PURE; |
||
| 4249 | }; |
||
| 4250 | |||
| 4251 | /// <summary> |
||
| 4252 | /// Encapsulates a 32-bit device independent bitmap and device context, which can be used for rendering glyphs. |
||
| 4253 | /// </summary> |
||
| 4254 | interface DWRITE_DECLARE_INTERFACE("5e5a32a3-8dff-4773-9ff6-0696eab77267") IDWriteBitmapRenderTarget : public IUnknown |
||
| 4255 | { |
||
| 4256 | /// <summary> |
||
| 4257 | /// Draws a run of glyphs to the bitmap. |
||
| 4258 | /// </summary> |
||
| 4259 | /// <param name="baselineOriginX">Horizontal position of the baseline origin, in DIPs, relative to the upper-left corner of the DIB.</param> |
||
| 4260 | /// <param name="baselineOriginY">Vertical position of the baseline origin, in DIPs, relative to the upper-left corner of the DIB.</param> |
||
| 4261 | /// <param name="measuringMode">Specifies measuring method for glyphs in the run. |
||
| 4262 | /// Renderer implementations may choose different rendering modes for different measuring methods, for example |
||
| 4263 | /// DWRITE_RENDERING_MODE_CLEARTYPE_NATURAL for DWRITE_MEASURING_MODE_NATURAL, |
||
| 4264 | /// DWRITE_RENDERING_MODE_CLEARTYPE_GDI_CLASSIC for DWRITE_MEASURING_MODE_GDI_CLASSIC, and |
||
| 4265 | /// DWRITE_RENDERING_MODE_CLEARTYPE_GDI_NATURAL for DWRITE_MEASURING_MODE_GDI_NATURAL. |
||
| 4266 | /// </param> |
||
| 4267 | /// <param name="glyphRun">Structure containing the properties of the glyph run.</param> |
||
| 4268 | /// <param name="renderingParams">Object that controls rendering behavior.</param> |
||
| 4269 | /// <param name="textColor">Specifies the foreground color of the text.</param> |
||
| 4270 | /// <param name="blackBoxRect">Optional rectangle that receives the bounding box (in pixels not DIPs) of all the pixels affected by |
||
| 4271 | /// drawing the glyph run. The black box rectangle may extend beyond the dimensions of the bitmap.</param> |
||
| 4272 | /// <returns> |
||
| 4273 | /// Standard HRESULT error code. |
||
| 4274 | /// </returns> |
||
| 4275 | STDMETHOD(DrawGlyphRun)( |
||
| 4276 | FLOAT baselineOriginX, |
||
| 4277 | FLOAT baselineOriginY, |
||
| 4278 | DWRITE_MEASURING_MODE measuringMode, |
||
| 4279 | __in DWRITE_GLYPH_RUN const* glyphRun, |
||
| 4280 | IDWriteRenderingParams* renderingParams, |
||
| 4281 | COLORREF textColor, |
||
| 4282 | __out_opt RECT* blackBoxRect = NULL |
||
| 4283 | ) PURE; |
||
| 4284 | |||
| 4285 | /// <summary> |
||
| 4286 | /// Gets a handle to the memory device context. |
||
| 4287 | /// </summary> |
||
| 4288 | /// <returns> |
||
| 4289 | /// Returns the device context handle. |
||
| 4290 | /// </returns> |
||
| 4291 | /// <remarks> |
||
| 4292 | /// An application can use the device context to draw using GDI functions. An application can obtain the bitmap handle |
||
| 4293 | /// (HBITMAP) by calling GetCurrentObject. An application that wants information about the underlying bitmap, including |
||
| 4294 | /// a pointer to the pixel data, can call GetObject to fill in a DIBSECTION structure. The bitmap is always a 32-bit |
||
| 4295 | /// top-down DIB. |
||
| 4296 | /// </remarks> |
||
| 4297 | STDMETHOD_(HDC, GetMemoryDC)() PURE; |
||
| 4298 | |||
| 4299 | /// <summary> |
||
| 4300 | /// Gets the number of bitmap pixels per DIP. A DIP (device-independent pixel) is 1/96 inch so this value is the number |
||
| 4301 | /// if pixels per inch divided by 96. |
||
| 4302 | /// </summary> |
||
| 4303 | /// <returns> |
||
| 4304 | /// Returns the number of bitmap pixels per DIP. |
||
| 4305 | /// </returns> |
||
| 4306 | STDMETHOD_(FLOAT, GetPixelsPerDip)() PURE; |
||
| 4307 | |||
| 4308 | /// <summary> |
||
| 4309 | /// Sets the number of bitmap pixels per DIP. A DIP (device-independent pixel) is 1/96 inch so this value is the number |
||
| 4310 | /// if pixels per inch divided by 96. |
||
| 4311 | /// </summary> |
||
| 4312 | /// <param name="pixelsPerDip">Specifies the number of pixels per DIP.</param> |
||
| 4313 | /// <returns> |
||
| 4314 | /// Standard HRESULT error code. |
||
| 4315 | /// </returns> |
||
| 4316 | STDMETHOD(SetPixelsPerDip)( |
||
| 4317 | FLOAT pixelsPerDip |
||
| 4318 | ) PURE; |
||
| 4319 | |||
| 4320 | /// <summary> |
||
| 4321 | /// Gets the transform that maps abstract coordinate to DIPs. By default this is the identity |
||
| 4322 | /// transform. Note that this is unrelated to the world transform of the underlying device |
||
| 4323 | /// context. |
||
| 4324 | /// </summary> |
||
| 4325 | /// <param name="transform">Receives the transform.</param> |
||
| 4326 | /// <returns> |
||
| 4327 | /// Standard HRESULT error code. |
||
| 4328 | /// </returns> |
||
| 4329 | STDMETHOD(GetCurrentTransform)( |
||
| 4330 | __out DWRITE_MATRIX* transform |
||
| 4331 | ) PURE; |
||
| 4332 | |||
| 4333 | /// <summary> |
||
| 4334 | /// Sets the transform that maps abstract coordinate to DIPs. This does not affect the world |
||
| 4335 | /// transform of the underlying device context. |
||
| 4336 | /// </summary> |
||
| 4337 | /// <param name="transform">Specifies the new transform. This parameter can be NULL, in which |
||
| 4338 | /// case the identity transform is implied.</param> |
||
| 4339 | /// <returns> |
||
| 4340 | /// Standard HRESULT error code. |
||
| 4341 | /// </returns> |
||
| 4342 | STDMETHOD(SetCurrentTransform)( |
||
| 4343 | __in_opt DWRITE_MATRIX const* transform |
||
| 4344 | ) PURE; |
||
| 4345 | |||
| 4346 | /// <summary> |
||
| 4347 | /// Gets the dimensions of the bitmap. |
||
| 4348 | /// </summary> |
||
| 4349 | /// <param name="size">Receives the size of the bitmap in pixels.</param> |
||
| 4350 | /// <returns> |
||
| 4351 | /// Standard HRESULT error code. |
||
| 4352 | /// </returns> |
||
| 4353 | STDMETHOD(GetSize)( |
||
| 4354 | __out SIZE* size |
||
| 4355 | ) PURE; |
||
| 4356 | |||
| 4357 | /// <summary> |
||
| 4358 | /// Resizes the bitmap. |
||
| 4359 | /// </summary> |
||
| 4360 | /// <param name="width">New bitmap width, in pixels.</param> |
||
| 4361 | /// <param name="height">New bitmap height, in pixels.</param> |
||
| 4362 | /// <returns> |
||
| 4363 | /// Standard HRESULT error code. |
||
| 4364 | /// </returns> |
||
| 4365 | STDMETHOD(Resize)( |
||
| 4366 | UINT32 width, |
||
| 4367 | UINT32 height |
||
| 4368 | ) PURE; |
||
| 4369 | }; |
||
| 4370 | |||
| 4371 | /// <summary> |
||
| 4372 | /// The GDI interop interface provides interoperability with GDI. |
||
| 4373 | /// </summary> |
||
| 4374 | interface DWRITE_DECLARE_INTERFACE("1edd9491-9853-4299-898f-6432983b6f3a") IDWriteGdiInterop : public IUnknown |
||
| 4375 | { |
||
| 4376 | /// <summary> |
||
| 4377 | /// Creates a font object that matches the properties specified by the LOGFONT structure. |
||
| 4378 | /// </summary> |
||
| 4379 | /// <param name="logFont">Structure containing a GDI-compatible font description.</param> |
||
| 4380 | /// <param name="font">Receives a newly created font object if successful, or NULL in case of error.</param> |
||
| 4381 | /// <returns> |
||
| 4382 | /// Standard HRESULT error code. |
||
| 4383 | /// </returns> |
||
| 4384 | STDMETHOD(CreateFontFromLOGFONT)( |
||
| 4385 | __in LOGFONTW const* logFont, |
||
| 4386 | __out IDWriteFont** font |
||
| 4387 | ) PURE; |
||
| 4388 | |||
| 4389 | /// <summary> |
||
| 4390 | /// Initializes a LOGFONT structure based on the GDI-compatible properties of the specified font. |
||
| 4391 | /// </summary> |
||
| 4392 | /// <param name="font">Specifies a font in the system font collection.</param> |
||
| 4393 | /// <param name="logFont">Structure that receives a GDI-compatible font description.</param> |
||
| 4394 | /// <param name="isSystemFont">Contains TRUE if the specified font object is part of the system font collection |
||
| 4395 | /// or FALSE otherwise.</param> |
||
| 4396 | /// <returns> |
||
| 4397 | /// Standard HRESULT error code. |
||
| 4398 | /// </returns> |
||
| 4399 | STDMETHOD(ConvertFontToLOGFONT)( |
||
| 4400 | IDWriteFont* font, |
||
| 4401 | __out LOGFONTW* logFont, |
||
| 4402 | __out BOOL* isSystemFont |
||
| 4403 | ) PURE; |
||
| 4404 | |||
| 4405 | /// <summary> |
||
| 4406 | /// Initializes a LOGFONT structure based on the GDI-compatible properties of the specified font. |
||
| 4407 | /// </summary> |
||
| 4408 | /// <param name="font">Specifies a font face.</param> |
||
| 4409 | /// <param name="logFont">Structure that receives a GDI-compatible font description.</param> |
||
| 4410 | /// <returns> |
||
| 4411 | /// Standard HRESULT error code. |
||
| 4412 | /// </returns> |
||
| 4413 | STDMETHOD(ConvertFontFaceToLOGFONT)( |
||
| 4414 | IDWriteFontFace* font, |
||
| 4415 | __out LOGFONTW* logFont |
||
| 4416 | ) PURE; |
||
| 4417 | |||
| 4418 | /// <summary> |
||
| 4419 | /// Creates a font face object that corresponds to the currently selected HFONT. |
||
| 4420 | /// </summary> |
||
| 4421 | /// <param name="hdc">Handle to a device context into which a font has been selected. It is assumed that the client |
||
| 4422 | /// has already performed font mapping and that the font selected into the DC is the actual font that would be used |
||
| 4423 | /// for rendering glyphs.</param> |
||
| 4424 | /// <param name="fontFace">Contains the newly created font face object, or NULL in case of failure.</param> |
||
| 4425 | /// <returns> |
||
| 4426 | /// Standard HRESULT error code. |
||
| 4427 | /// </returns> |
||
| 4428 | STDMETHOD(CreateFontFaceFromHdc)( |
||
| 4429 | HDC hdc, |
||
| 4430 | __out IDWriteFontFace** fontFace |
||
| 4431 | ) PURE; |
||
| 4432 | |||
| 4433 | /// <summary> |
||
| 4434 | /// Creates an object that encapsulates a bitmap and memory DC which can be used for rendering glyphs. |
||
| 4435 | /// </summary> |
||
| 4436 | /// <param name="hdc">Optional device context used to create a compatible memory DC.</param> |
||
| 4437 | /// <param name="width">Width of the bitmap.</param> |
||
| 4438 | /// <param name="height">Height of the bitmap.</param> |
||
| 4439 | /// <param name="renderTarget">Receives a pointer to the newly created render target.</param> |
||
| 4440 | STDMETHOD(CreateBitmapRenderTarget)( |
||
| 4441 | __in_opt HDC hdc, |
||
| 4442 | UINT32 width, |
||
| 4443 | UINT32 height, |
||
| 4444 | __out IDWriteBitmapRenderTarget** renderTarget |
||
| 4445 | ) PURE; |
||
| 4446 | }; |
||
| 4447 | |||
| 4448 | /// <summary> |
||
| 4449 | /// The DWRITE_TEXTURE_TYPE enumeration identifies a type of alpha texture. An alpha texture is a bitmap of alpha values, each |
||
| 4450 | /// representing the darkness (i.e., opacity) of a pixel or subpixel. |
||
| 4451 | /// </summary> |
||
| 4452 | enum DWRITE_TEXTURE_TYPE |
||
| 4453 | { |
||
| 4454 | /// <summary> |
||
| 4455 | /// Specifies an alpha texture for aliased text rendering (i.e., bi-level, where each pixel is either fully opaque or fully transparent), |
||
| 4456 | /// with one byte per pixel. |
||
| 4457 | /// </summary> |
||
| 4458 | DWRITE_TEXTURE_ALIASED_1x1, |
||
| 4459 | |||
| 4460 | /// <summary> |
||
| 4461 | /// Specifies an alpha texture for ClearType text rendering, with three bytes per pixel in the horizontal dimension and |
||
| 4462 | /// one byte per pixel in the vertical dimension. |
||
| 4463 | /// </summary> |
||
| 4464 | DWRITE_TEXTURE_CLEARTYPE_3x1 |
||
| 4465 | }; |
||
| 4466 | |||
| 4467 | /// <summary> |
||
| 4468 | /// Maximum alpha value in a texture returned by IDWriteGlyphRunAnalysis::CreateAlphaTexture. |
||
| 4469 | /// </summary> |
||
| 4470 | #define DWRITE_ALPHA_MAX 255 |
||
| 4471 | |||
| 4472 | /// <summary> |
||
| 4473 | /// Interface that encapsulates information used to render a glyph run. |
||
| 4474 | /// </summary> |
||
| 4475 | interface DWRITE_DECLARE_INTERFACE("7d97dbf7-e085-42d4-81e3-6a883bded118") IDWriteGlyphRunAnalysis : public IUnknown |
||
| 4476 | { |
||
| 4477 | /// <summary> |
||
| 4478 | /// Gets the bounding rectangle of the physical pixels affected by the glyph run. |
||
| 4479 | /// </summary> |
||
| 4480 | /// <param name="textureType">Specifies the type of texture requested. If a bi-level texture is requested, the |
||
| 4481 | /// bounding rectangle includes only bi-level glyphs. Otherwise, the bounding rectangle includes only anti-aliased |
||
| 4482 | /// glyphs.</param> |
||
| 4483 | /// <param name="textureBounds">Receives the bounding rectangle, or an empty rectangle if there are no glyphs |
||
| 4484 | /// if the specified type.</param> |
||
| 4485 | /// <returns> |
||
| 4486 | /// Standard HRESULT error code. |
||
| 4487 | /// </returns> |
||
| 4488 | STDMETHOD(GetAlphaTextureBounds)( |
||
| 4489 | DWRITE_TEXTURE_TYPE textureType, |
||
| 4490 | __out RECT* textureBounds |
||
| 4491 | ) PURE; |
||
| 4492 | |||
| 4493 | /// <summary> |
||
| 4494 | /// Creates an alpha texture of the specified type. |
||
| 4495 | /// </summary> |
||
| 4496 | /// <param name="textureType">Specifies the type of texture requested. If a bi-level texture is requested, the |
||
| 4497 | /// texture contains only bi-level glyphs. Otherwise, the texture contains only anti-aliased glyphs.</param> |
||
| 4498 | /// <param name="textureBounds">Specifies the bounding rectangle of the texture, which can be different than |
||
| 4499 | /// the bounding rectangle returned by GetAlphaTextureBounds.</param> |
||
| 4500 | /// <param name="alphaValues">Receives the array of alpha values.</param> |
||
| 4501 | /// <param name="bufferSize">Size of the alphaValues array. The minimum size depends on the dimensions of the |
||
| 4502 | /// rectangle and the type of texture requested.</param> |
||
| 4503 | /// <returns> |
||
| 4504 | /// Standard HRESULT error code. |
||
| 4505 | /// </returns> |
||
| 4506 | STDMETHOD(CreateAlphaTexture)( |
||
| 4507 | DWRITE_TEXTURE_TYPE textureType, |
||
| 4508 | __in RECT const* textureBounds, |
||
| 4509 | __out_bcount(bufferSize) BYTE* alphaValues, |
||
| 4510 | UINT32 bufferSize |
||
| 4511 | ) PURE; |
||
| 4512 | |||
| 4513 | /// <summary> |
||
| 4514 | /// Gets properties required for ClearType blending. |
||
| 4515 | /// </summary> |
||
| 4516 | /// <param name="renderingParams">Rendering parameters object. In most cases, the values returned in the output |
||
| 4517 | /// parameters are based on the properties of this object. The exception is if a GDI-compatible rendering mode |
||
| 4518 | /// is specified.</param> |
||
| 4519 | /// <param name="blendGamma">Receives the gamma value to use for gamma correction.</param> |
||
| 4520 | /// <param name="blendEnhancedContrast">Receives the enhanced contrast value.</param> |
||
| 4521 | /// <param name="blendClearTypeLevel">Receives the ClearType level.</param> |
||
| 4522 | STDMETHOD(GetAlphaBlendParams)( |
||
| 4523 | IDWriteRenderingParams* renderingParams, |
||
| 4524 | __out FLOAT* blendGamma, |
||
| 4525 | __out FLOAT* blendEnhancedContrast, |
||
| 4526 | __out FLOAT* blendClearTypeLevel |
||
| 4527 | ) PURE; |
||
| 4528 | }; |
||
| 4529 | |||
| 4530 | /// <summary> |
||
| 4531 | /// The root factory interface for all DWrite objects. |
||
| 4532 | /// </summary> |
||
| 4533 | interface DWRITE_DECLARE_INTERFACE("b859ee5a-d838-4b5b-a2e8-1adc7d93db48") IDWriteFactory : public IUnknown |
||
| 4534 | { |
||
| 4535 | /// <summary> |
||
| 4536 | /// Gets a font collection representing the set of installed fonts. |
||
| 4537 | /// </summary> |
||
| 4538 | /// <param name="fontCollection">Receives a pointer to the system font collection object, or NULL in case of failure.</param> |
||
| 4539 | /// <param name="checkForUpdates">If this parameter is nonzero, the function performs an immediate check for changes to the set of |
||
| 4540 | /// installed fonts. If this parameter is FALSE, the function will still detect changes if the font cache service is running, but |
||
| 4541 | /// there may be some latency. For example, an application might specify TRUE if it has itself just installed a font and wants to |
||
| 4542 | /// be sure the font collection contains that font.</param> |
||
| 4543 | /// <returns> |
||
| 4544 | /// Standard HRESULT error code. |
||
| 4545 | /// </returns> |
||
| 4546 | STDMETHOD(GetSystemFontCollection)( |
||
| 4547 | __out IDWriteFontCollection** fontCollection, |
||
| 4548 | BOOL checkForUpdates = FALSE |
||
| 4549 | ) PURE; |
||
| 4550 | |||
| 4551 | /// <summary> |
||
| 4552 | /// Creates a font collection using a custom font collection loader. |
||
| 4553 | /// </summary> |
||
| 4554 | /// <param name="collectionLoader">Application-defined font collection loader, which must have been previously |
||
| 4555 | /// registered using RegisterFontCollectionLoader.</param> |
||
| 4556 | /// <param name="collectionKey">Key used by the loader to identify a collection of font files.</param> |
||
| 4557 | /// <param name="collectionKeySize">Size in bytes of the collection key.</param> |
||
| 4558 | /// <param name="fontCollection">Receives a pointer to the system font collection object, or NULL in case of failure.</param> |
||
| 4559 | /// <returns> |
||
| 4560 | /// Standard HRESULT error code. |
||
| 4561 | /// </returns> |
||
| 4562 | STDMETHOD(CreateCustomFontCollection)( |
||
| 4563 | IDWriteFontCollectionLoader* collectionLoader, |
||
| 4564 | __in_bcount(collectionKeySize) void const* collectionKey, |
||
| 4565 | UINT32 collectionKeySize, |
||
| 4566 | __out IDWriteFontCollection** fontCollection |
||
| 4567 | ) PURE; |
||
| 4568 | |||
| 4569 | /// <summary> |
||
| 4570 | /// Registers a custom font collection loader with the factory object. |
||
| 4571 | /// </summary> |
||
| 4572 | /// <param name="fontCollectionLoader">Application-defined font collection loader.</param> |
||
| 4573 | /// <returns> |
||
| 4574 | /// Standard HRESULT error code. |
||
| 4575 | /// </returns> |
||
| 4576 | STDMETHOD(RegisterFontCollectionLoader)( |
||
| 4577 | IDWriteFontCollectionLoader* fontCollectionLoader |
||
| 4578 | ) PURE; |
||
| 4579 | |||
| 4580 | /// <summary> |
||
| 4581 | /// Unregisters a custom font collection loader that was previously registered using RegisterFontCollectionLoader. |
||
| 4582 | /// </summary> |
||
| 4583 | /// <param name="fontCollectionLoader">Application-defined font collection loader.</param> |
||
| 4584 | /// <returns> |
||
| 4585 | /// Standard HRESULT error code. |
||
| 4586 | /// </returns> |
||
| 4587 | STDMETHOD(UnregisterFontCollectionLoader)( |
||
| 4588 | IDWriteFontCollectionLoader* fontCollectionLoader |
||
| 4589 | ) PURE; |
||
| 4590 | |||
| 4591 | /// <summary> |
||
| 4592 | /// CreateFontFileReference creates a font file reference object from a local font file. |
||
| 4593 | /// </summary> |
||
| 4594 | /// <param name="filePath">Absolute file path. Subsequent operations on the constructed object may fail |
||
| 4595 | /// if the user provided filePath doesn't correspond to a valid file on the disk.</param> |
||
| 4596 | /// <param name="lastWriteTime">Last modified time of the input file path. If the parameter is omitted, |
||
| 4597 | /// the function will access the font file to obtain its last write time, so the clients are encouraged to specify this value |
||
| 4598 | /// to avoid extra disk access. Subsequent operations on the constructed object may fail |
||
| 4599 | /// if the user provided lastWriteTime doesn't match the file on the disk.</param> |
||
| 4600 | /// <param name="fontFile">Contains newly created font file reference object, or NULL in case of failure.</param> |
||
| 4601 | /// <returns> |
||
| 4602 | /// Standard HRESULT error code. |
||
| 4603 | /// </returns> |
||
| 4604 | STDMETHOD(CreateFontFileReference)( |
||
| 4605 | __in_z WCHAR const* filePath, |
||
| 4606 | __in_opt FILETIME const* lastWriteTime, |
||
| 4607 | __out IDWriteFontFile** fontFile |
||
| 4608 | ) PURE; |
||
| 4609 | |||
| 4610 | /// <summary> |
||
| 4611 | /// CreateCustomFontFileReference creates a reference to an application specific font file resource. |
||
| 4612 | /// This function enables an application or a document to use a font without having to install it on the system. |
||
| 4613 | /// The fontFileReferenceKey has to be unique only in the scope of the fontFileLoader used in this call. |
||
| 4614 | /// </summary> |
||
| 4615 | /// <param name="fontFileReferenceKey">Font file reference key that uniquely identifies the font file resource |
||
| 4616 | /// during the lifetime of fontFileLoader.</param> |
||
| 4617 | /// <param name="fontFileReferenceKeySize">Size of font file reference key in bytes.</param> |
||
| 4618 | /// <param name="fontFileLoader">Font file loader that will be used by the font system to load data from the file identified by |
||
| 4619 | /// fontFileReferenceKey.</param> |
||
| 4620 | /// <param name="fontFile">Contains the newly created font file object, or NULL in case of failure.</param> |
||
| 4621 | /// <returns> |
||
| 4622 | /// Standard HRESULT error code. |
||
| 4623 | /// </returns> |
||
| 4624 | /// <remarks> |
||
| 4625 | /// This function is provided for cases when an application or a document needs to use a font |
||
| 4626 | /// without having to install it on the system. fontFileReferenceKey has to be unique only in the scope |
||
| 4627 | /// of the fontFileLoader used in this call. |
||
| 4628 | /// </remarks> |
||
| 4629 | STDMETHOD(CreateCustomFontFileReference)( |
||
| 4630 | __in_bcount(fontFileReferenceKeySize) void const* fontFileReferenceKey, |
||
| 4631 | UINT32 fontFileReferenceKeySize, |
||
| 4632 | IDWriteFontFileLoader* fontFileLoader, |
||
| 4633 | __out IDWriteFontFile** fontFile |
||
| 4634 | ) PURE; |
||
| 4635 | |||
| 4636 | /// <summary> |
||
| 4637 | /// Creates a font face object. |
||
| 4638 | /// </summary> |
||
| 4639 | /// <param name="fontFaceType">The file format of the font face.</param> |
||
| 4640 | /// <param name="numberOfFiles">The number of font files require to represent the font face.</param> |
||
| 4641 | /// <param name="fontFiles">Font files representing the font face. Since IDWriteFontFace maintains its own references |
||
| 4642 | /// to the input font file objects, it's OK to release them after this call.</param> |
||
| 4643 | /// <param name="faceIndex">The zero based index of a font face in cases when the font files contain a collection of font faces. |
||
| 4644 | /// If the font files contain a single face, this value should be zero.</param> |
||
| 4645 | /// <param name="fontFaceSimulationFlags">Font face simulation flags for algorithmic emboldening and italicization.</param> |
||
| 4646 | /// <param name="fontFace">Contains the newly created font face object, or NULL in case of failure.</param> |
||
| 4647 | /// <returns> |
||
| 4648 | /// Standard HRESULT error code. |
||
| 4649 | /// </returns> |
||
| 4650 | STDMETHOD(CreateFontFace)( |
||
| 4651 | DWRITE_FONT_FACE_TYPE fontFaceType, |
||
| 4652 | UINT32 numberOfFiles, |
||
| 4653 | __in_ecount(numberOfFiles) IDWriteFontFile* const* fontFiles, |
||
| 4654 | UINT32 faceIndex, |
||
| 4655 | DWRITE_FONT_SIMULATIONS fontFaceSimulationFlags, |
||
| 4656 | __out IDWriteFontFace** fontFace |
||
| 4657 | ) PURE; |
||
| 4658 | |||
| 4659 | /// <summary> |
||
| 4660 | /// Creates a rendering parameters object with default settings for the primary monitor. |
||
| 4661 | /// </summary> |
||
| 4662 | /// <param name="renderingParams">Holds the newly created rendering parameters object, or NULL in case of failure.</param> |
||
| 4663 | /// <returns> |
||
| 4664 | /// Standard HRESULT error code. |
||
| 4665 | /// </returns> |
||
| 4666 | STDMETHOD(CreateRenderingParams)( |
||
| 4667 | __out IDWriteRenderingParams** renderingParams |
||
| 4668 | ) PURE; |
||
| 4669 | |||
| 4670 | /// <summary> |
||
| 4671 | /// Creates a rendering parameters object with default settings for the specified monitor. |
||
| 4672 | /// </summary> |
||
| 4673 | /// <param name="monitor">The monitor to read the default values from.</param> |
||
| 4674 | /// <param name="renderingParams">Holds the newly created rendering parameters object, or NULL in case of failure.</param> |
||
| 4675 | /// <returns> |
||
| 4676 | /// Standard HRESULT error code. |
||
| 4677 | /// </returns> |
||
| 4678 | STDMETHOD(CreateMonitorRenderingParams)( |
||
| 4679 | HMONITOR monitor, |
||
| 4680 | __out IDWriteRenderingParams** renderingParams |
||
| 4681 | ) PURE; |
||
| 4682 | |||
| 4683 | /// <summary> |
||
| 4684 | /// Creates a rendering parameters object with the specified properties. |
||
| 4685 | /// </summary> |
||
| 4686 | /// <param name="gamma">The gamma value used for gamma correction, which must be greater than zero and cannot exceed 256.</param> |
||
| 4687 | /// <param name="enhancedContrast">The amount of contrast enhancement, zero or greater.</param> |
||
| 4688 | /// <param name="clearTypeLevel">The degree of ClearType level, from 0.0f (no ClearType) to 1.0f (full ClearType).</param> |
||
| 4689 | /// <param name="pixelGeometry">The geometry of a device pixel.</param> |
||
| 4690 | /// <param name="renderingMode">Method of rendering glyphs. In most cases, this should be DWRITE_RENDERING_MODE_DEFAULT to automatically use an appropriate mode.</param> |
||
| 4691 | /// <param name="renderingParams">Holds the newly created rendering parameters object, or NULL in case of failure.</param> |
||
| 4692 | /// <returns> |
||
| 4693 | /// Standard HRESULT error code. |
||
| 4694 | /// </returns> |
||
| 4695 | STDMETHOD(CreateCustomRenderingParams)( |
||
| 4696 | FLOAT gamma, |
||
| 4697 | FLOAT enhancedContrast, |
||
| 4698 | FLOAT clearTypeLevel, |
||
| 4699 | DWRITE_PIXEL_GEOMETRY pixelGeometry, |
||
| 4700 | DWRITE_RENDERING_MODE renderingMode, |
||
| 4701 | __out IDWriteRenderingParams** renderingParams |
||
| 4702 | ) PURE; |
||
| 4703 | |||
| 4704 | /// <summary> |
||
| 4705 | /// Registers a font file loader with DirectWrite. |
||
| 4706 | /// </summary> |
||
| 4707 | /// <param name="fontFileLoader">Pointer to the implementation of the IDWriteFontFileLoader for a particular file resource type.</param> |
||
| 4708 | /// <returns> |
||
| 4709 | /// Standard HRESULT error code. |
||
| 4710 | /// </returns> |
||
| 4711 | /// <remarks> |
||
| 4712 | /// This function registers a font file loader with DirectWrite. |
||
| 4713 | /// Font file loader interface handles loading font file resources of a particular type from a key. |
||
| 4714 | /// The font file loader interface is recommended to be implemented by a singleton object. |
||
| 4715 | /// A given instance can only be registered once. |
||
| 4716 | /// Succeeding attempts will return an error that it has already been registered. |
||
| 4717 | /// IMPORTANT: font file loader implementations must not register themselves with DirectWrite |
||
| 4718 | /// inside their constructors and must not unregister themselves in their destructors, because |
||
| 4719 | /// registration and unregistraton operations increment and decrement the object reference count respectively. |
||
| 4720 | /// Instead, registration and unregistration of font file loaders with DirectWrite should be performed |
||
| 4721 | /// outside of the font file loader implementation as a separate step. |
||
| 4722 | /// </remarks> |
||
| 4723 | STDMETHOD(RegisterFontFileLoader)( |
||
| 4724 | IDWriteFontFileLoader* fontFileLoader |
||
| 4725 | ) PURE; |
||
| 4726 | |||
| 4727 | /// <summary> |
||
| 4728 | /// Unregisters a font file loader that was previously registered with the DirectWrite font system using RegisterFontFileLoader. |
||
| 4729 | /// </summary> |
||
| 4730 | /// <param name="fontFileLoader">Pointer to the file loader that was previously registered with the DirectWrite font system using RegisterFontFileLoader.</param> |
||
| 4731 | /// <returns> |
||
| 4732 | /// This function will succeed if the user loader is requested to be removed. |
||
| 4733 | /// It will fail if the pointer to the file loader identifies a standard DirectWrite loader, |
||
| 4734 | /// or a loader that is never registered or has already been unregistered. |
||
| 4735 | /// </returns> |
||
| 4736 | /// <remarks> |
||
| 4737 | /// This function unregisters font file loader callbacks with the DirectWrite font system. |
||
| 4738 | /// The font file loader interface is recommended to be implemented by a singleton object. |
||
| 4739 | /// IMPORTANT: font file loader implementations must not register themselves with DirectWrite |
||
| 4740 | /// inside their constructors and must not unregister themselves in their destructors, because |
||
| 4741 | /// registration and unregistraton operations increment and decrement the object reference count respectively. |
||
| 4742 | /// Instead, registration and unregistration of font file loaders with DirectWrite should be performed |
||
| 4743 | /// outside of the font file loader implementation as a separate step. |
||
| 4744 | /// </remarks> |
||
| 4745 | STDMETHOD(UnregisterFontFileLoader)( |
||
| 4746 | IDWriteFontFileLoader* fontFileLoader |
||
| 4747 | ) PURE; |
||
| 4748 | |||
| 4749 | /// <summary> |
||
| 4750 | /// Create a text format object used for text layout. |
||
| 4751 | /// </summary> |
||
| 4752 | /// <param name="fontFamilyName">Name of the font family</param> |
||
| 4753 | /// <param name="fontCollection">Font collection. NULL indicates the system font collection.</param> |
||
| 4754 | /// <param name="fontWeight">Font weight</param> |
||
| 4755 | /// <param name="fontStyle">Font style</param> |
||
| 4756 | /// <param name="fontStretch">Font stretch</param> |
||
| 4757 | /// <param name="fontSize">Logical size of the font in DIP units. A DIP ("device-independent pixel") equals 1/96 inch.</param> |
||
| 4758 | /// <param name="localeName">Locale name</param> |
||
| 4759 | /// <param name="textFormat">Contains newly created text format object, or NULL in case of failure.</param> |
||
| 4760 | /// <returns> |
||
| 4761 | /// Standard HRESULT error code. |
||
| 4762 | /// </returns> |
||
| 4763 | STDMETHOD(CreateTextFormat)( |
||
| 4764 | __in_z WCHAR const* fontFamilyName, |
||
| 4765 | __maybenull IDWriteFontCollection* fontCollection, |
||
| 4766 | DWRITE_FONT_WEIGHT fontWeight, |
||
| 4767 | DWRITE_FONT_STYLE fontStyle, |
||
| 4768 | DWRITE_FONT_STRETCH fontStretch, |
||
| 4769 | FLOAT fontSize, |
||
| 4770 | __in_z WCHAR const* localeName, |
||
| 4771 | __out IDWriteTextFormat** textFormat |
||
| 4772 | ) PURE; |
||
| 4773 | |||
| 4774 | /// <summary> |
||
| 4775 | /// Create a typography object used in conjunction with text format for text layout. |
||
| 4776 | /// </summary> |
||
| 4777 | /// <param name="typography">Contains newly created typography object, or NULL in case of failure.</param> |
||
| 4778 | /// <returns> |
||
| 4779 | /// Standard HRESULT error code. |
||
| 4780 | /// </returns> |
||
| 4781 | STDMETHOD(CreateTypography)( |
||
| 4782 | __out IDWriteTypography** typography |
||
| 4783 | ) PURE; |
||
| 4784 | |||
| 4785 | /// <summary> |
||
| 4786 | /// Create an object used for interoperability with GDI. |
||
| 4787 | /// </summary> |
||
| 4788 | /// <param name="gdiInterop">Receives the GDI interop object if successful, or NULL in case of failure.</param> |
||
| 4789 | /// <returns> |
||
| 4790 | /// Standard HRESULT error code. |
||
| 4791 | /// </returns> |
||
| 4792 | STDMETHOD(GetGdiInterop)( |
||
| 4793 | __out IDWriteGdiInterop** gdiInterop |
||
| 4794 | ) PURE; |
||
| 4795 | |||
| 4796 | /// <summary> |
||
| 4797 | /// CreateTextLayout takes a string, format, and associated constraints |
||
| 4798 | /// and produces and object representing the fully analyzed |
||
| 4799 | /// and formatted result. |
||
| 4800 | /// </summary> |
||
| 4801 | /// <param name="string">The string to layout.</param> |
||
| 4802 | /// <param name="stringLength">The length of the string.</param> |
||
| 4803 | /// <param name="textFormat">The format to apply to the string.</param> |
||
| 4804 | /// <param name="maxWidth">Width of the layout box.</param> |
||
| 4805 | /// <param name="maxHeight">Height of the layout box.</param> |
||
| 4806 | /// <param name="textLayout">The resultant object.</param> |
||
| 4807 | /// <returns> |
||
| 4808 | /// Standard HRESULT error code. |
||
| 4809 | /// </returns> |
||
| 4810 | STDMETHOD(CreateTextLayout)( |
||
| 4811 | __in_ecount(stringLength) WCHAR const* string, |
||
| 4812 | UINT32 stringLength, |
||
| 4813 | IDWriteTextFormat* textFormat, |
||
| 4814 | FLOAT maxWidth, |
||
| 4815 | FLOAT maxHeight, |
||
| 4816 | __out IDWriteTextLayout** textLayout |
||
| 4817 | ) PURE; |
||
| 4818 | |||
| 4819 | /// <summary> |
||
| 4820 | /// CreateGdiCompatibleTextLayout takes a string, format, and associated constraints |
||
| 4821 | /// and produces and object representing the result formatted for a particular display resolution |
||
| 4822 | /// and measuring method. The resulting text layout should only be used for the intended resolution, |
||
| 4823 | /// and for cases where text scalability is desired, CreateTextLayout should be used instead. |
||
| 4824 | /// </summary> |
||
| 4825 | /// <param name="string">The string to layout.</param> |
||
| 4826 | /// <param name="stringLength">The length of the string.</param> |
||
| 4827 | /// <param name="textFormat">The format to apply to the string.</param> |
||
| 4828 | /// <param name="layoutWidth">Width of the layout box.</param> |
||
| 4829 | /// <param name="layoutHeight">Height of the layout box.</param> |
||
| 4830 | /// <param name="pixelsPerDip">Number of physical pixels per DIP. For example, if rendering onto a 96 DPI device then pixelsPerDip |
||
| 4831 | /// is 1. If rendering onto a 120 DPI device then pixelsPerDip is 120/96.</param> |
||
| 4832 | /// <param name="transform">Optional transform applied to the glyphs and their positions. This transform is applied after the |
||
| 4833 | /// scaling specified the font size and pixelsPerDip.</param> |
||
| 4834 | /// <param name="useGdiNatural"> |
||
| 4835 | /// When set to FALSE, instructs the text layout to use the same metrics as GDI aliased text. |
||
| 4836 | /// When set to TRUE, instructs the text layout to use the same metrics as text measured by GDI using a font |
||
| 4837 | /// created with CLEARTYPE_NATURAL_QUALITY. |
||
| 4838 | /// </param> |
||
| 4839 | /// <param name="textLayout">The resultant object.</param> |
||
| 4840 | /// <returns> |
||
| 4841 | /// Standard HRESULT error code. |
||
| 4842 | /// </returns> |
||
| 4843 | STDMETHOD(CreateGdiCompatibleTextLayout)( |
||
| 4844 | __in_ecount(stringLength) WCHAR const* string, |
||
| 4845 | UINT32 stringLength, |
||
| 4846 | IDWriteTextFormat* textFormat, |
||
| 4847 | FLOAT layoutWidth, |
||
| 4848 | FLOAT layoutHeight, |
||
| 4849 | FLOAT pixelsPerDip, |
||
| 4850 | __in_opt DWRITE_MATRIX const* transform, |
||
| 4851 | BOOL useGdiNatural, |
||
| 4852 | __out IDWriteTextLayout** textLayout |
||
| 4853 | ) PURE; |
||
| 4854 | |||
| 4855 | /// <summary> |
||
| 4856 | /// The application may call this function to create an inline object for trimming, using an ellipsis as the omission sign. |
||
| 4857 | /// The ellipsis will be created using the current settings of the format, including base font, style, and any effects. |
||
| 4858 | /// Alternate omission signs can be created by the application by implementing IDWriteInlineObject. |
||
| 4859 | /// </summary> |
||
| 4860 | /// <param name="textFormat">Text format used as a template for the omission sign.</param> |
||
| 4861 | /// <param name="trimmingSign">Created omission sign.</param> |
||
| 4862 | /// <returns> |
||
| 4863 | /// Standard HRESULT error code. |
||
| 4864 | /// </returns> |
||
| 4865 | STDMETHOD(CreateEllipsisTrimmingSign)( |
||
| 4866 | IDWriteTextFormat* textFormat, |
||
| 4867 | __out IDWriteInlineObject** trimmingSign |
||
| 4868 | ) PURE; |
||
| 4869 | |||
| 4870 | /// <summary> |
||
| 4871 | /// Return an interface to perform text analysis with. |
||
| 4872 | /// </summary> |
||
| 4873 | /// <param name="textAnalyzer">The resultant object.</param> |
||
| 4874 | /// <returns> |
||
| 4875 | /// Standard HRESULT error code. |
||
| 4876 | /// </returns> |
||
| 4877 | STDMETHOD(CreateTextAnalyzer)( |
||
| 4878 | __out IDWriteTextAnalyzer** textAnalyzer |
||
| 4879 | ) PURE; |
||
| 4880 | |||
| 4881 | /// <summary> |
||
| 4882 | /// Creates a number substitution object using a locale name, |
||
| 4883 | /// substitution method, and whether to ignore user overrides (uses NLS |
||
| 4884 | /// defaults for the given culture instead). |
||
| 4885 | /// </summary> |
||
| 4886 | /// <param name="substitutionMethod">Method of number substitution to use.</param> |
||
| 4887 | /// <param name="localeName">Which locale to obtain the digits from.</param> |
||
| 4888 | /// <param name="ignoreUserOverride">Ignore the user's settings and use the locale defaults</param> |
||
| 4889 | /// <param name="numberSubstitution">Receives a pointer to the newly created object.</param> |
||
| 4890 | STDMETHOD(CreateNumberSubstitution)( |
||
| 4891 | __in DWRITE_NUMBER_SUBSTITUTION_METHOD substitutionMethod, |
||
| 4892 | __in_z WCHAR const* localeName, |
||
| 4893 | __in BOOL ignoreUserOverride, |
||
| 4894 | __out IDWriteNumberSubstitution** numberSubstitution |
||
| 4895 | ) PURE; |
||
| 4896 | |||
| 4897 | /// <summary> |
||
| 4898 | /// Creates a glyph run analysis object, which encapsulates information |
||
| 4899 | /// used to render a glyph run. |
||
| 4900 | /// </summary> |
||
| 4901 | /// <param name="glyphRun">Structure specifying the properties of the glyph run.</param> |
||
| 4902 | /// <param name="pixelsPerDip">Number of physical pixels per DIP. For example, if rendering onto a 96 DPI bitmap then pixelsPerDip |
||
| 4903 | /// is 1. If rendering onto a 120 DPI bitmap then pixelsPerDip is 120/96.</param> |
||
| 4904 | /// <param name="transform">Optional transform applied to the glyphs and their positions. This transform is applied after the |
||
| 4905 | /// scaling specified the emSize and pixelsPerDip.</param> |
||
| 4906 | /// <param name="renderingMode">Specifies the rendering mode, which must be one of the raster rendering modes (i.e., not default |
||
| 4907 | /// and not outline).</param> |
||
| 4908 | /// <param name="measuringMode">Specifies the method to measure glyphs.</param> |
||
| 4909 | /// <param name="baselineOriginX">Horizontal position of the baseline origin, in DIPs.</param> |
||
| 4910 | /// <param name="baselineOriginY">Vertical position of the baseline origin, in DIPs.</param> |
||
| 4911 | /// <param name="glyphRunAnalysis">Receives a pointer to the newly created object.</param> |
||
| 4912 | /// <returns> |
||
| 4913 | /// Standard HRESULT error code. |
||
| 4914 | /// </returns> |
||
| 4915 | STDMETHOD(CreateGlyphRunAnalysis)( |
||
| 4916 | __in DWRITE_GLYPH_RUN const* glyphRun, |
||
| 4917 | FLOAT pixelsPerDip, |
||
| 4918 | __in_opt DWRITE_MATRIX const* transform, |
||
| 4919 | DWRITE_RENDERING_MODE renderingMode, |
||
| 4920 | DWRITE_MEASURING_MODE measuringMode, |
||
| 4921 | FLOAT baselineOriginX, |
||
| 4922 | FLOAT baselineOriginY, |
||
| 4923 | __out IDWriteGlyphRunAnalysis** glyphRunAnalysis |
||
| 4924 | ) PURE; |
||
| 4925 | |||
| 4926 | }; // interface IDWriteFactory |
||
| 4927 | |||
| 4928 | /// <summary> |
||
| 4929 | /// Creates a DirectWrite factory object that is used for subsequent creation of individual DirectWrite objects. |
||
| 4930 | /// </summary> |
||
| 4931 | /// <param name="factoryType">Identifies whether the factory object will be shared or isolated.</param> |
||
| 4932 | /// <param name="iid">Identifies the DirectWrite factory interface, such as __uuidof(IDWriteFactory).</param> |
||
| 4933 | /// <param name="factory">Receives the DirectWrite factory object.</param> |
||
| 4934 | /// <returns> |
||
| 4935 | /// Standard HRESULT error code. |
||
| 4936 | /// </returns> |
||
| 4937 | /// <remarks> |
||
| 4938 | /// Obtains DirectWrite factory object that is used for subsequent creation of individual DirectWrite classes. |
||
| 4939 | /// DirectWrite factory contains internal state such as font loader registration and cached font data. |
||
| 4940 | /// In most cases it is recommended to use the shared factory object, because it allows multiple components |
||
| 4941 | /// that use DirectWrite to share internal DirectWrite state and reduce memory usage. |
||
| 4942 | /// However, there are cases when it is desirable to reduce the impact of a component, |
||
| 4943 | /// such as a plug-in from an untrusted source, on the rest of the process by sandboxing and isolating it |
||
| 4944 | /// from the rest of the process components. In such cases, it is recommended to use an isolated factory for the sandboxed |
||
| 4945 | /// component. |
||
| 4946 | /// </remarks> |
||
| 4947 | EXTERN_C HRESULT DWRITE_EXPORT DWriteCreateFactory( |
||
| 4948 | __in DWRITE_FACTORY_TYPE factoryType, |
||
| 4949 | __in REFIID iid, |
||
| 4950 | __out IUnknown **factory |
||
| 4951 | ); |
||
| 4952 | |||
| 4953 | // Macros used to define DirectWrite error codes. |
||
| 4954 | #define FACILITY_DWRITE 0x898 |
||
| 4955 | #define DWRITE_ERR_BASE 0x5000 |
||
| 4956 | #define MAKE_DWRITE_HR(severity, code) MAKE_HRESULT(severity, FACILITY_DWRITE, (DWRITE_ERR_BASE + code)) |
||
| 4957 | #define MAKE_DWRITE_HR_ERR(code) MAKE_DWRITE_HR(SEVERITY_ERROR, code) |
||
| 4958 | |||
| 4959 | /// <summary> |
||
| 4960 | /// Indicates an error in an input file such as a font file. |
||
| 4961 | /// </summary> |
||
| 4962 | #define DWRITE_E_FILEFORMAT MAKE_DWRITE_HR_ERR(0x000) |
||
| 4963 | |||
| 4964 | /// <summary> |
||
| 4965 | /// Indicates an error originating in DirectWrite code, which is not expected to occur but is safe to recover from. |
||
| 4966 | /// </summary> |
||
| 4967 | #define DWRITE_E_UNEXPECTED MAKE_DWRITE_HR_ERR(0x001) |
||
| 4968 | |||
| 4969 | /// <summary> |
||
| 4970 | /// Indicates the specified font does not exist. |
||
| 4971 | /// </summary> |
||
| 4972 | #define DWRITE_E_NOFONT MAKE_DWRITE_HR_ERR(0x002) |
||
| 4973 | |||
| 4974 | /// <summary> |
||
| 4975 | /// A font file could not be opened because the file, directory, network location, drive, or other storage |
||
| 4976 | /// location does not exist or is unavailable. |
||
| 4977 | /// </summary> |
||
| 4978 | #define DWRITE_E_FILENOTFOUND MAKE_DWRITE_HR_ERR(0x003) |
||
| 4979 | |||
| 4980 | /// <summary> |
||
| 4981 | /// A font file exists but could not be opened due to access denied, sharing violation, or similar error. |
||
| 4982 | /// </summary> |
||
| 4983 | #define DWRITE_E_FILEACCESS MAKE_DWRITE_HR_ERR(0x004) |
||
| 4984 | |||
| 4985 | /// <summary> |
||
| 4986 | /// A font collection is obsolete due to changes in the system. |
||
| 4987 | /// </summary> |
||
| 4988 | #define DWRITE_E_FONTCOLLECTIONOBSOLETE MAKE_DWRITE_HR_ERR(0x005) |
||
| 4989 | |||
| 4990 | /// <summary> |
||
| 4991 | /// The given interface is already registered. |
||
| 4992 | /// </summary> |
||
| 4993 | #define DWRITE_E_ALREADYREGISTERED MAKE_DWRITE_HR_ERR(0x006) |
||
| 4994 | |||
| 4995 | #endif /* DWRITE_H_INCLUDED */ |