dwrite_2.idl 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332
  1. /*
  2. * Copyright 2014 Nikolay Sivov for CodeWeavers
  3. *
  4. * This library is free software; you can redistribute it and/or
  5. * modify it under the terms of the GNU Lesser General Public
  6. * License as published by the Free Software Foundation; either
  7. * version 2.1 of the License, or (at your option) any later version.
  8. *
  9. * This library is distributed in the hope that it will be useful,
  10. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  12. * Lesser General Public License for more details.
  13. *
  14. * You should have received a copy of the GNU Lesser General Public
  15. * License along with this library; if not, write to the Free Software
  16. * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
  17. */
  18. import "dwrite_1.idl";
  19. typedef enum DWRITE_OPTICAL_ALIGNMENT
  20. {
  21. DWRITE_OPTICAL_ALIGNMENT_NONE,
  22. DWRITE_OPTICAL_ALIGNMENT_NO_SIDE_BEARINGS
  23. } DWRITE_OPTICAL_ALIGNMENT;
  24. typedef enum DWRITE_GRID_FIT_MODE
  25. {
  26. DWRITE_GRID_FIT_MODE_DEFAULT,
  27. DWRITE_GRID_FIT_MODE_DISABLED,
  28. DWRITE_GRID_FIT_MODE_ENABLED
  29. } DWRITE_GRID_FIT_MODE;
  30. typedef struct DWRITE_TEXT_METRICS1
  31. {
  32. /* DWRITE_TEXT_METRICS fields */
  33. FLOAT left;
  34. FLOAT top;
  35. FLOAT width;
  36. FLOAT widthIncludingTrailingWhitespace;
  37. FLOAT height;
  38. FLOAT layoutWidth;
  39. FLOAT layoutHeight;
  40. UINT32 maxBidiReorderingDepth;
  41. UINT32 lineCount;
  42. /* DWRITE_TEXT_METRICS1 fields */
  43. FLOAT heightIncludingTrailingWhitespace;
  44. } DWRITE_TEXT_METRICS1;
  45. cpp_quote("#ifndef D3DCOLORVALUE_DEFINED")
  46. typedef struct _D3DCOLORVALUE
  47. {
  48. union {
  49. FLOAT r;
  50. FLOAT dvR;
  51. };
  52. union {
  53. FLOAT g;
  54. FLOAT dvG;
  55. };
  56. union {
  57. FLOAT b;
  58. FLOAT dvB;
  59. };
  60. union {
  61. FLOAT a;
  62. FLOAT dvA;
  63. };
  64. } D3DCOLORVALUE;
  65. cpp_quote("#define D3DCOLORVALUE_DEFINED")
  66. cpp_quote("#endif")
  67. typedef D3DCOLORVALUE DWRITE_COLOR_F;
  68. typedef struct DWRITE_COLOR_GLYPH_RUN
  69. {
  70. DWRITE_GLYPH_RUN glyphRun;
  71. DWRITE_GLYPH_RUN_DESCRIPTION* glyphRunDescription;
  72. FLOAT baselineOriginX;
  73. FLOAT baselineOriginY;
  74. DWRITE_COLOR_F runColor;
  75. UINT16 paletteIndex;
  76. } DWRITE_COLOR_GLYPH_RUN;
  77. [
  78. local,
  79. object,
  80. uuid(d3e0e934-22a0-427e-aae4-7d9574b59db1)
  81. ]
  82. interface IDWriteTextRenderer1 : IDWriteTextRenderer
  83. {
  84. HRESULT DrawGlyphRun(void *context,
  85. FLOAT originX,
  86. FLOAT originY,
  87. DWRITE_GLYPH_ORIENTATION_ANGLE angle,
  88. DWRITE_MEASURING_MODE mode,
  89. DWRITE_GLYPH_RUN const *run,
  90. DWRITE_GLYPH_RUN_DESCRIPTION const *rundescr,
  91. IUnknown *effect);
  92. HRESULT DrawUnderline(void *context,
  93. FLOAT originX,
  94. FLOAT originY,
  95. DWRITE_GLYPH_ORIENTATION_ANGLE angle,
  96. DWRITE_UNDERLINE const *underline,
  97. IUnknown *effect);
  98. HRESULT DrawStrikethrough(void *context,
  99. FLOAT originX,
  100. FLOAT originY,
  101. DWRITE_GLYPH_ORIENTATION_ANGLE angle,
  102. DWRITE_STRIKETHROUGH const *strikethrough,
  103. IUnknown *effect
  104. );
  105. HRESULT DrawInlineObject(void *context,
  106. FLOAT originX,
  107. FLOAT originY,
  108. DWRITE_GLYPH_ORIENTATION_ANGLE angle,
  109. IDWriteInlineObject *inlineObject,
  110. BOOL is_sideways,
  111. BOOL is_rtl,
  112. IUnknown *effect
  113. );
  114. }
  115. [
  116. local,
  117. object,
  118. uuid(efa008f9-f7a1-48bf-b05c-f224713cc0ff)
  119. ]
  120. interface IDWriteFontFallback : IUnknown
  121. {
  122. HRESULT MapCharacters(IDWriteTextAnalysisSource *source,
  123. UINT32 position,
  124. UINT32 length,
  125. IDWriteFontCollection *basecollection,
  126. const WCHAR *baseFamilyName,
  127. DWRITE_FONT_WEIGHT baseWeight,
  128. DWRITE_FONT_STYLE baseStyle,
  129. DWRITE_FONT_STRETCH baseStretch,
  130. UINT32 *mappedLength,
  131. IDWriteFont **mappedFont,
  132. FLOAT *scale
  133. );
  134. }
  135. [
  136. local,
  137. object,
  138. uuid(5f174b49-0d8b-4cfb-8bca-f1cce9d06c67)
  139. ]
  140. interface IDWriteTextFormat1 : IDWriteTextFormat
  141. {
  142. HRESULT SetVerticalGlyphOrientation(DWRITE_VERTICAL_GLYPH_ORIENTATION orientation);
  143. DWRITE_VERTICAL_GLYPH_ORIENTATION GetVerticalGlyphOrientation();
  144. HRESULT SetLastLineWrapping(BOOL lastline_wrapping_enabled);
  145. BOOL GetLastLineWrapping();
  146. HRESULT SetOpticalAlignment(DWRITE_OPTICAL_ALIGNMENT alignment);
  147. DWRITE_OPTICAL_ALIGNMENT GetOpticalAlignment();
  148. HRESULT SetFontFallback(IDWriteFontFallback *fallback);
  149. HRESULT GetFontFallback(IDWriteFontFallback **fallback);
  150. }
  151. [
  152. local,
  153. object,
  154. uuid(1093c18f-8d5e-43f0-b064-0917311b525e)
  155. ]
  156. interface IDWriteTextLayout2 : IDWriteTextLayout1
  157. {
  158. HRESULT GetMetrics(DWRITE_TEXT_METRICS1 *metrics);
  159. HRESULT SetVerticalGlyphOrientation(DWRITE_VERTICAL_GLYPH_ORIENTATION orientation);
  160. DWRITE_VERTICAL_GLYPH_ORIENTATION GetVerticalGlyphOrientation();
  161. HRESULT SetLastLineWrapping(BOOL lastline_wrapping_enabled);
  162. BOOL GetLastLineWrapping();
  163. HRESULT SetOpticalAlignment(DWRITE_OPTICAL_ALIGNMENT alignment);
  164. DWRITE_OPTICAL_ALIGNMENT GetOpticalAlignment();
  165. HRESULT SetFontFallback(IDWriteFontFallback *fallback);
  166. HRESULT GetFontFallback(IDWriteFontFallback **fallback);
  167. }
  168. [
  169. local,
  170. object,
  171. uuid(553a9ff3-5693-4df7-b52b-74806f7f2eb9)
  172. ]
  173. interface IDWriteTextAnalyzer2 : IDWriteTextAnalyzer1
  174. {
  175. HRESULT GetGlyphOrientationTransform(DWRITE_GLYPH_ORIENTATION_ANGLE angle,
  176. BOOL is_sideways,
  177. FLOAT originX,
  178. FLOAT originY,
  179. DWRITE_MATRIX *transform
  180. );
  181. HRESULT GetTypographicFeatures(IDWriteFontFace *fontface,
  182. DWRITE_SCRIPT_ANALYSIS analysis,
  183. const WCHAR *localeName,
  184. UINT32 max_tagcount,
  185. UINT32 *actual_tagcount,
  186. DWRITE_FONT_FEATURE_TAG *tags
  187. );
  188. HRESULT CheckTypographicFeature(IDWriteFontFace *fontface,
  189. DWRITE_SCRIPT_ANALYSIS analysis,
  190. const WCHAR *localeName,
  191. DWRITE_FONT_FEATURE_TAG feature,
  192. UINT32 glyph_count,
  193. const UINT16 *indices,
  194. UINT8 *feature_applies
  195. );
  196. }
  197. [
  198. local,
  199. object,
  200. uuid(fd882d06-8aba-4fb8-b849-8be8b73e14de)
  201. ]
  202. interface IDWriteFontFallbackBuilder : IUnknown
  203. {
  204. HRESULT AddMapping(const DWRITE_UNICODE_RANGE *ranges,
  205. UINT32 rangesCount,
  206. WCHAR const **targetFamilyNames,
  207. UINT32 targetFamilyNamesCount,
  208. [defaultvalue(NULL)] IDWriteFontCollection *collection,
  209. [defaultvalue(NULL)] WCHAR const *localeName,
  210. [defaultvalue(NULL)] WCHAR const *baseFamilyName,
  211. [defaultvalue(1)] FLOAT scale
  212. );
  213. HRESULT AddMappings(IDWriteFontFallback *fallback);
  214. HRESULT CreateFontFallback(IDWriteFontFallback **fallback);
  215. }
  216. [
  217. local,
  218. object,
  219. uuid(29748ed6-8c9c-4a6a-be0b-d912e8538944)
  220. ]
  221. interface IDWriteFont2 : IDWriteFont1
  222. {
  223. BOOL IsColorFont();
  224. }
  225. [
  226. local,
  227. object,
  228. uuid(d8b768ff-64bc-4e66-982b-ec8e87f693f7)
  229. ]
  230. interface IDWriteFontFace2 : IDWriteFontFace1
  231. {
  232. BOOL IsColorFont();
  233. UINT32 GetColorPaletteCount();
  234. UINT32 GetPaletteEntryCount();
  235. HRESULT GetPaletteEntries(UINT32 palette_index,
  236. UINT32 first_entry_index,
  237. UINT32 entry_count,
  238. DWRITE_COLOR_F *entries
  239. );
  240. HRESULT GetRecommendedRenderingMode(FLOAT fontEmSize,
  241. FLOAT dpiX,
  242. FLOAT dpiY,
  243. DWRITE_MATRIX const *transform,
  244. BOOL is_sideways,
  245. DWRITE_OUTLINE_THRESHOLD threshold,
  246. DWRITE_MEASURING_MODE measuringmode,
  247. IDWriteRenderingParams *params,
  248. DWRITE_RENDERING_MODE *renderingmode,
  249. DWRITE_GRID_FIT_MODE *gridfitmode
  250. );
  251. }
  252. [
  253. local,
  254. object,
  255. uuid(d31fbe17-f157-41a2-8d24-cb779e0560e8)
  256. ]
  257. interface IDWriteColorGlyphRunEnumerator : IUnknown
  258. {
  259. HRESULT MoveNext(BOOL *hasRun);
  260. HRESULT GetCurrentRun(DWRITE_COLOR_GLYPH_RUN const **run);
  261. }
  262. [
  263. local,
  264. object,
  265. uuid(f9d711c3-9777-40ae-87e8-3e5aF9bf0948)
  266. ]
  267. interface IDWriteRenderingParams2 : IDWriteRenderingParams1
  268. {
  269. DWRITE_GRID_FIT_MODE GetGridFitMode();
  270. }
  271. [
  272. local,
  273. object,
  274. uuid(0439fc60-ca44-4994-8dee-3a9af7b732ec)
  275. ]
  276. interface IDWriteFactory2 : IDWriteFactory1
  277. {
  278. HRESULT GetSystemFontFallback(IDWriteFontFallback **fallback);
  279. HRESULT CreateFontFallbackBuilder(IDWriteFontFallbackBuilder **fallbackbuilder);
  280. HRESULT TranslateColorGlyphRun(FLOAT originX,
  281. FLOAT originY,
  282. const DWRITE_GLYPH_RUN *run,
  283. const DWRITE_GLYPH_RUN_DESCRIPTION *rundescr,
  284. DWRITE_MEASURING_MODE mode,
  285. const DWRITE_MATRIX *transform,
  286. UINT32 palette_index,
  287. IDWriteColorGlyphRunEnumerator **colorlayers
  288. );
  289. HRESULT CreateCustomRenderingParams(FLOAT gamma,
  290. FLOAT contrast,
  291. FLOAT grayscalecontrast,
  292. FLOAT cleartypeLevel,
  293. DWRITE_PIXEL_GEOMETRY pixelGeometry,
  294. DWRITE_RENDERING_MODE renderingMode,
  295. DWRITE_GRID_FIT_MODE gridFitMode,
  296. IDWriteRenderingParams2 **params
  297. );
  298. HRESULT CreateGlyphRunAnalysis(const DWRITE_GLYPH_RUN *run,
  299. const DWRITE_MATRIX *transform,
  300. DWRITE_RENDERING_MODE renderingMode,
  301. DWRITE_MEASURING_MODE measuringMode,
  302. DWRITE_GRID_FIT_MODE gridFitMode,
  303. DWRITE_TEXT_ANTIALIAS_MODE antialiasMode,
  304. FLOAT originX,
  305. FLOAT originY,
  306. IDWriteGlyphRunAnalysis **analysis
  307. );
  308. }