aboutsummaryrefslogtreecommitdiffstats
path: root/src/w32dwrite.c
diff options
context:
space:
mode:
authorPo Lu2024-10-26 08:39:24 +0800
committerPo Lu2024-10-26 08:39:24 +0800
commit574e97575f4331f43fc079b3bfa6d74213bc2559 (patch)
treec26c89eb1b18d4b5243240cc36da28d407988584 /src/w32dwrite.c
parent76268160ba9262a8479589427b8e783db0242260 (diff)
downloademacs-574e97575f4331f43fc079b3bfa6d74213bc2559.tar.gz
emacs-574e97575f4331f43fc079b3bfa6d74213bc2559.zip
; Fix coding style of Uniscribe files
* src/w32dwrite.c (EMACS_DWRITE_UNUSED, IDWriteFontFaceVtbl) (IDWriteFontFace, IDWriteRenderingParamsVtbl) (IDWriteRenderingParams, IDWriteFontVtbl, IDWriteFont) (IDWriteBitmapRenderTargetVtbl, IDWriteBitmapRenderTarget) (IDWriteBitmapRenderTarget1, IDWriteGdiInteropVtbl) (IDWriteGdiInterop, IDWriteFactoryVtbl, IDWriteFactory) (IDWriteColorGlyphRunEnumeratorVtbl) (IDWriteColorGlyphRunEnumerator, IDWriteFactory2Vtbl) (IDWriteFactory2, get_font_face, text_extents_internal) (w32_initialize_direct_write, w32_dwrite_draw) (w32_use_direct_write): * src/w32font.c (w32font_text_extents, w32font_draw): * src/w32uniscribe.c (uniscribe_open): Correct coding style.
Diffstat (limited to 'src/w32dwrite.c')
-rw-r--r--src/w32dwrite.c137
1 files changed, 70 insertions, 67 deletions
diff --git a/src/w32dwrite.c b/src/w32dwrite.c
index 1ca965fe374..ecc33af5f3f 100644
--- a/src/w32dwrite.c
+++ b/src/w32dwrite.c
@@ -56,7 +56,7 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
56 we don't use are declared with the EMACS_DWRITE_UNUSED macro, to 56 we don't use are declared with the EMACS_DWRITE_UNUSED macro, to
57 avoid bringing in more types that would need to be declared. */ 57 avoid bringing in more types that would need to be declared. */
58 58
59#define EMACS_DWRITE_UNUSED(name) void (STDMETHODCALLTYPE *name)(void) 59#define EMACS_DWRITE_UNUSED(name) void (STDMETHODCALLTYPE *name) (void)
60 60
61#define DWRITE_E_NOCOLOR _HRESULT_TYPEDEF_(0x8898500CL) 61#define DWRITE_E_NOCOLOR _HRESULT_TYPEDEF_(0x8898500CL)
62 62
@@ -125,9 +125,12 @@ typedef interface IDWriteBitmapRenderTarget IDWriteBitmapRenderTarget;
125typedef interface IDWriteBitmapRenderTarget1 IDWriteBitmapRenderTarget1; 125typedef interface IDWriteBitmapRenderTarget1 IDWriteBitmapRenderTarget1;
126typedef interface IDWriteColorGlyphRunEnumerator IDWriteColorGlyphRunEnumerator; 126typedef interface IDWriteColorGlyphRunEnumerator IDWriteColorGlyphRunEnumerator;
127 127
128DEFINE_GUID(IID_IDWriteBitmapRenderTarget1, 0x791e8298, 0x3ef3, 0x4230, 0x98,0x80, 0xc9,0xbd,0xec,0xc4,0x20,0x64); 128DEFINE_GUID (IID_IDWriteBitmapRenderTarget1, 0x791e8298, 0x3ef3, 0x4230, 0x98,
129DEFINE_GUID(IID_IDWriteFactory2, 0x0439fc60, 0xca44, 0x4994, 0x8d,0xee, 0x3a,0x9a,0xf7,0xb7,0x32,0xec); 129 0x80, 0xc9, 0xbd, 0xec, 0xc4, 0x20, 0x64);
130DEFINE_GUID(IID_IDWriteFactory, 0xb859ee5a, 0xd838, 0x4b5b, 0xa2,0xe8, 0x1a,0xdc,0x7d,0x93,0xdb,0x48); 130DEFINE_GUID (IID_IDWriteFactory2, 0x0439fc60, 0xca44, 0x4994, 0x8d, 0xee,
131 0x3a, 0x9a, 0xf7, 0xb7, 0x32, 0xec);
132DEFINE_GUID (IID_IDWriteFactory, 0xb859ee5a, 0xd838, 0x4b5b, 0xa2, 0xe8, 0x1a,
133 0xdc, 0x7d, 0x93, 0xdb, 0x48);
131 134
132typedef struct DWRITE_GLYPH_OFFSET { 135typedef struct DWRITE_GLYPH_OFFSET {
133 FLOAT advanceOffset; 136 FLOAT advanceOffset;
@@ -168,14 +171,14 @@ typedef struct IDWriteFontFaceVtbl {
168 171
169 HRESULT (STDMETHODCALLTYPE *QueryInterface) 172 HRESULT (STDMETHODCALLTYPE *QueryInterface)
170 (IDWriteFontFace *This, REFIID riid, void **ppvObject); 173 (IDWriteFontFace *This, REFIID riid, void **ppvObject);
171 ULONG (STDMETHODCALLTYPE *AddRef)(IDWriteFontFace *This); 174 ULONG (STDMETHODCALLTYPE *AddRef) (IDWriteFontFace *This);
172 ULONG (STDMETHODCALLTYPE *Release)(IDWriteFontFace *This); 175 ULONG (STDMETHODCALLTYPE *Release) (IDWriteFontFace *This);
173 176
174 EMACS_DWRITE_UNUSED(GetType); 177 EMACS_DWRITE_UNUSED (GetType);
175 EMACS_DWRITE_UNUSED(GetFiles); 178 EMACS_DWRITE_UNUSED (GetFiles);
176 EMACS_DWRITE_UNUSED(GetIndex); 179 EMACS_DWRITE_UNUSED (GetIndex);
177 EMACS_DWRITE_UNUSED(GetSimulations); 180 EMACS_DWRITE_UNUSED (GetSimulations);
178 EMACS_DWRITE_UNUSED(IsSymbolFont); 181 EMACS_DWRITE_UNUSED (IsSymbolFont);
179 182
180 void (STDMETHODCALLTYPE *GetMetrics) 183 void (STDMETHODCALLTYPE *GetMetrics)
181 (IDWriteFontFace *This, DWRITE_FONT_METRICS *metrics); 184 (IDWriteFontFace *This, DWRITE_FONT_METRICS *metrics);
@@ -207,7 +210,7 @@ typedef struct IDWriteFontFaceVtbl {
207} IDWriteFontFaceVtbl; 210} IDWriteFontFaceVtbl;
208 211
209interface IDWriteFontFace { 212interface IDWriteFontFace {
210 CONST_VTBL IDWriteFontFaceVtbl* lpVtbl; 213 CONST_VTBL IDWriteFontFaceVtbl *lpVtbl;
211}; 214};
212 215
213typedef struct IDWriteRenderingParamsVtbl { 216typedef struct IDWriteRenderingParamsVtbl {
@@ -215,8 +218,8 @@ typedef struct IDWriteRenderingParamsVtbl {
215 218
216 HRESULT (STDMETHODCALLTYPE *QueryInterface) 219 HRESULT (STDMETHODCALLTYPE *QueryInterface)
217 (IDWriteRenderingParams *This, REFIID riid, void **ppvObject); 220 (IDWriteRenderingParams *This, REFIID riid, void **ppvObject);
218 ULONG (STDMETHODCALLTYPE *AddRef)(IDWriteRenderingParams *This); 221 ULONG (STDMETHODCALLTYPE *AddRef) (IDWriteRenderingParams *This);
219 ULONG (STDMETHODCALLTYPE *Release)(IDWriteRenderingParams *This); 222 ULONG (STDMETHODCALLTYPE *Release) (IDWriteRenderingParams *This);
220 223
221 FLOAT (STDMETHODCALLTYPE *GetGamma) 224 FLOAT (STDMETHODCALLTYPE *GetGamma)
222 (IDWriteRenderingParams *This); 225 (IDWriteRenderingParams *This);
@@ -230,7 +233,7 @@ typedef struct IDWriteRenderingParamsVtbl {
230} IDWriteRenderingParamsVtbl; 233} IDWriteRenderingParamsVtbl;
231 234
232interface IDWriteRenderingParams { 235interface IDWriteRenderingParams {
233 CONST_VTBL IDWriteRenderingParamsVtbl* lpVtbl; 236 CONST_VTBL IDWriteRenderingParamsVtbl *lpVtbl;
234}; 237};
235 238
236typedef struct IDWriteFontVtbl { 239typedef struct IDWriteFontVtbl {
@@ -238,8 +241,8 @@ typedef struct IDWriteFontVtbl {
238 241
239 HRESULT (STDMETHODCALLTYPE *QueryInterface) 242 HRESULT (STDMETHODCALLTYPE *QueryInterface)
240 (IDWriteFont *This, REFIID riid, void **ppvObject); 243 (IDWriteFont *This, REFIID riid, void **ppvObject);
241 ULONG (STDMETHODCALLTYPE *AddRef)(IDWriteFont *This); 244 ULONG (STDMETHODCALLTYPE *AddRef) (IDWriteFont *This);
242 ULONG (STDMETHODCALLTYPE *Release)(IDWriteFont *This); 245 ULONG (STDMETHODCALLTYPE *Release) (IDWriteFont *This);
243 246
244 EMACS_DWRITE_UNUSED (GetFontFamily); 247 EMACS_DWRITE_UNUSED (GetFontFamily);
245 EMACS_DWRITE_UNUSED (GetWeight); 248 EMACS_DWRITE_UNUSED (GetWeight);
@@ -253,7 +256,7 @@ typedef struct IDWriteFontVtbl {
253 void (STDMETHODCALLTYPE *GetMetrics) 256 void (STDMETHODCALLTYPE *GetMetrics)
254 (IDWriteFont *This, DWRITE_FONT_METRICS *metrics); 257 (IDWriteFont *This, DWRITE_FONT_METRICS *metrics);
255 258
256 EMACS_DWRITE_UNUSED(HasCharacter); 259 EMACS_DWRITE_UNUSED (HasCharacter);
257 260
258 HRESULT (STDMETHODCALLTYPE *CreateFontFace) 261 HRESULT (STDMETHODCALLTYPE *CreateFontFace)
259 (IDWriteFont *This, IDWriteFontFace **face); 262 (IDWriteFont *This, IDWriteFontFace **face);
@@ -262,7 +265,7 @@ typedef struct IDWriteFontVtbl {
262} IDWriteFontVtbl; 265} IDWriteFontVtbl;
263 266
264interface IDWriteFont { 267interface IDWriteFont {
265 CONST_VTBL IDWriteFontVtbl* lpVtbl; 268 CONST_VTBL IDWriteFontVtbl *lpVtbl;
266}; 269};
267 270
268typedef struct IDWriteBitmapRenderTargetVtbl { 271typedef struct IDWriteBitmapRenderTargetVtbl {
@@ -270,8 +273,8 @@ typedef struct IDWriteBitmapRenderTargetVtbl {
270 273
271 HRESULT (STDMETHODCALLTYPE *QueryInterface) 274 HRESULT (STDMETHODCALLTYPE *QueryInterface)
272 (IDWriteBitmapRenderTarget *This, REFIID riid, void **ppvObject); 275 (IDWriteBitmapRenderTarget *This, REFIID riid, void **ppvObject);
273 ULONG (STDMETHODCALLTYPE *AddRef)(IDWriteBitmapRenderTarget *This); 276 ULONG (STDMETHODCALLTYPE *AddRef) (IDWriteBitmapRenderTarget *This);
274 ULONG (STDMETHODCALLTYPE *Release)(IDWriteBitmapRenderTarget *This); 277 ULONG (STDMETHODCALLTYPE *Release) (IDWriteBitmapRenderTarget *This);
275 278
276 HRESULT (STDMETHODCALLTYPE *DrawGlyphRun) 279 HRESULT (STDMETHODCALLTYPE *DrawGlyphRun)
277 (IDWriteBitmapRenderTarget *This, 280 (IDWriteBitmapRenderTarget *This,
@@ -283,7 +286,7 @@ typedef struct IDWriteBitmapRenderTargetVtbl {
283 COLORREF textColor, 286 COLORREF textColor,
284 RECT *blackbox_rect); 287 RECT *blackbox_rect);
285 288
286 HDC (STDMETHODCALLTYPE *GetMemoryDC)(IDWriteBitmapRenderTarget *This); 289 HDC (STDMETHODCALLTYPE *GetMemoryDC) (IDWriteBitmapRenderTarget *This);
287 290
288 EMACS_DWRITE_UNUSED (GetPixelsPerDip); 291 EMACS_DWRITE_UNUSED (GetPixelsPerDip);
289 292
@@ -298,7 +301,7 @@ typedef struct IDWriteBitmapRenderTargetVtbl {
298} IDWriteBitmapRenderTargetVtbl; 301} IDWriteBitmapRenderTargetVtbl;
299 302
300interface IDWriteBitmapRenderTarget { 303interface IDWriteBitmapRenderTarget {
301 CONST_VTBL IDWriteBitmapRenderTargetVtbl* lpVtbl; 304 CONST_VTBL IDWriteBitmapRenderTargetVtbl *lpVtbl;
302}; 305};
303 306
304typedef struct IDWriteBitmapRenderTarget1Vtbl { 307typedef struct IDWriteBitmapRenderTarget1Vtbl {
@@ -326,7 +329,7 @@ typedef struct IDWriteBitmapRenderTarget1Vtbl {
326} IDWriteBitmapRenderTarget1Vtbl; 329} IDWriteBitmapRenderTarget1Vtbl;
327 330
328interface IDWriteBitmapRenderTarget1 { 331interface IDWriteBitmapRenderTarget1 {
329 CONST_VTBL IDWriteBitmapRenderTarget1Vtbl* lpVtbl; 332 CONST_VTBL IDWriteBitmapRenderTarget1Vtbl *lpVtbl;
330}; 333};
331 334
332typedef struct IDWriteGdiInteropVtbl { 335typedef struct IDWriteGdiInteropVtbl {
@@ -334,8 +337,8 @@ typedef struct IDWriteGdiInteropVtbl {
334 337
335 HRESULT (STDMETHODCALLTYPE *QueryInterface) 338 HRESULT (STDMETHODCALLTYPE *QueryInterface)
336 (IDWriteGdiInterop *This, REFIID riid, void **ppvObject); 339 (IDWriteGdiInterop *This, REFIID riid, void **ppvObject);
337 ULONG (STDMETHODCALLTYPE *AddRef)(IDWriteGdiInterop *This); 340 ULONG (STDMETHODCALLTYPE *AddRef) (IDWriteGdiInterop *This);
338 ULONG (STDMETHODCALLTYPE *Release)(IDWriteGdiInterop *This); 341 ULONG (STDMETHODCALLTYPE *Release) (IDWriteGdiInterop *This);
339 342
340 HRESULT (STDMETHODCALLTYPE *CreateFontFromLOGFONT) 343 HRESULT (STDMETHODCALLTYPE *CreateFontFromLOGFONT)
341 (IDWriteGdiInterop *This, const LOGFONTW *logfont, 344 (IDWriteGdiInterop *This, const LOGFONTW *logfont,
@@ -352,7 +355,7 @@ typedef struct IDWriteGdiInteropVtbl {
352} IDWriteGdiInteropVtbl; 355} IDWriteGdiInteropVtbl;
353 356
354interface IDWriteGdiInterop { 357interface IDWriteGdiInterop {
355 CONST_VTBL IDWriteGdiInteropVtbl* lpVtbl; 358 CONST_VTBL IDWriteGdiInteropVtbl *lpVtbl;
356}; 359};
357 360
358typedef struct IDWriteFactoryVtbl { 361typedef struct IDWriteFactoryVtbl {
@@ -360,8 +363,8 @@ typedef struct IDWriteFactoryVtbl {
360 363
361 HRESULT (STDMETHODCALLTYPE *QueryInterface) 364 HRESULT (STDMETHODCALLTYPE *QueryInterface)
362 (IDWriteFactory *This, REFIID riid, void **ppvObject); 365 (IDWriteFactory *This, REFIID riid, void **ppvObject);
363 ULONG (STDMETHODCALLTYPE *AddRef)(IDWriteFactory *This); 366 ULONG (STDMETHODCALLTYPE *AddRef) (IDWriteFactory *This);
364 ULONG (STDMETHODCALLTYPE *Release)(IDWriteFactory *This); 367 ULONG (STDMETHODCALLTYPE *Release) (IDWriteFactory *This);
365 368
366 EMACS_DWRITE_UNUSED (GetSystemFontCollection); 369 EMACS_DWRITE_UNUSED (GetSystemFontCollection);
367 EMACS_DWRITE_UNUSED (CreateCustomFontCollection); 370 EMACS_DWRITE_UNUSED (CreateCustomFontCollection);
@@ -392,37 +395,35 @@ typedef struct IDWriteFactoryVtbl {
392 END_INTERFACE 395 END_INTERFACE
393} IDWriteFactoryVtbl; 396} IDWriteFactoryVtbl;
394 397
395interface IDWriteFactory { CONST_VTBL IDWriteFactoryVtbl* lpVtbl; }; 398interface IDWriteFactory { CONST_VTBL IDWriteFactoryVtbl *lpVtbl; };
396 399
397typedef struct IDWriteColorGlyphRunEnumeratorVtbl { 400typedef struct IDWriteColorGlyphRunEnumeratorVtbl {
398 BEGIN_INTERFACE 401 BEGIN_INTERFACE
399 402
400 HRESULT (STDMETHODCALLTYPE *QueryInterface) 403 HRESULT (STDMETHODCALLTYPE *QueryInterface)
401 (IDWriteColorGlyphRunEnumerator *This, REFIID riid, void **ppvObject); 404 (IDWriteColorGlyphRunEnumerator *This, REFIID riid, void **ppvObject);
402 ULONG (STDMETHODCALLTYPE *AddRef)(IDWriteColorGlyphRunEnumerator *This); 405 ULONG (STDMETHODCALLTYPE *AddRef) (IDWriteColorGlyphRunEnumerator *This);
403 ULONG (STDMETHODCALLTYPE *Release)(IDWriteColorGlyphRunEnumerator *This); 406 ULONG (STDMETHODCALLTYPE *Release) (IDWriteColorGlyphRunEnumerator *This);
404 407
405 HRESULT (STDMETHODCALLTYPE *MoveNext)( 408 HRESULT (STDMETHODCALLTYPE *MoveNext) (IDWriteColorGlyphRunEnumerator *This,
406 IDWriteColorGlyphRunEnumerator *This, 409 WINBOOL *hasRun);
407 WINBOOL *hasRun);
408 410
409 HRESULT (STDMETHODCALLTYPE *GetCurrentRun)( 411 HRESULT (STDMETHODCALLTYPE *GetCurrentRun) (IDWriteColorGlyphRunEnumerator *This,
410 IDWriteColorGlyphRunEnumerator *This, 412 const DWRITE_COLOR_GLYPH_RUN **run);
411 const DWRITE_COLOR_GLYPH_RUN **run);
412 413
413 END_INTERFACE 414 END_INTERFACE
414} IDWriteColorGlyphRunEnumeratorVtbl; 415} IDWriteColorGlyphRunEnumeratorVtbl;
415 416
416interface IDWriteColorGlyphRunEnumerator { 417interface IDWriteColorGlyphRunEnumerator {
417 CONST_VTBL IDWriteColorGlyphRunEnumeratorVtbl* lpVtbl; 418 CONST_VTBL IDWriteColorGlyphRunEnumeratorVtbl *lpVtbl;
418}; 419};
419 420
420typedef struct IDWriteFactory2Vtbl { 421typedef struct IDWriteFactory2Vtbl {
421 BEGIN_INTERFACE 422 BEGIN_INTERFACE
422 HRESULT (STDMETHODCALLTYPE *QueryInterface) 423 HRESULT (STDMETHODCALLTYPE *QueryInterface)
423 (IDWriteFactory2 *This, REFIID riid, void **ppvObject); 424 (IDWriteFactory2 *This, REFIID riid, void **ppvObject);
424 ULONG (STDMETHODCALLTYPE *AddRef)(IDWriteFactory2 *This); 425 ULONG (STDMETHODCALLTYPE *AddRef) (IDWriteFactory2 *This);
425 ULONG (STDMETHODCALLTYPE *Release)(IDWriteFactory2 *This); 426 ULONG (STDMETHODCALLTYPE *Release) (IDWriteFactory2 *This);
426 EMACS_DWRITE_UNUSED (GetSystemFontCollection); 427 EMACS_DWRITE_UNUSED (GetSystemFontCollection);
427 EMACS_DWRITE_UNUSED (CreateCustomFontCollection); 428 EMACS_DWRITE_UNUSED (CreateCustomFontCollection);
428 EMACS_DWRITE_UNUSED (RegisterFontCollectionLoader); 429 EMACS_DWRITE_UNUSED (RegisterFontCollectionLoader);
@@ -467,7 +468,7 @@ typedef struct IDWriteFactory2Vtbl {
467} IDWriteFactory2Vtbl; 468} IDWriteFactory2Vtbl;
468 469
469interface IDWriteFactory2 { 470interface IDWriteFactory2 {
470 CONST_VTBL IDWriteFactory2Vtbl* lpVtbl; 471 CONST_VTBL IDWriteFactory2Vtbl *lpVtbl;
471}; 472};
472#else /* MINGW_W64 */ 473#else /* MINGW_W64 */
473# include <dwrite_3.h> 474# include <dwrite_3.h>
@@ -529,15 +530,15 @@ get_font_face (struct font *infont, IDWriteFontFace **face)
529 LOGFONTW logfont; 530 LOGFONTW logfont;
530 IDWriteFont *font; 531 IDWriteFont *font;
531 532
532 struct uniscribe_font_info *uniscribe_font = 533 struct uniscribe_font_info *uniscribe_font
533 (struct uniscribe_font_info *) infont; 534 = (struct uniscribe_font_info *) infont;
534 535
535 /* Check the cache. */ 536 /* Check the cache. */
536 *face = uniscribe_font->dwrite_cache; 537 *face = uniscribe_font->dwrite_cache;
537 if (*face) 538 if (*face)
538 return uniscribe_font->dwrite_font_size; 539 return uniscribe_font->dwrite_font_size;
539 540
540 GetObjectW (FONT_HANDLE(infont), sizeof (LOGFONTW), &logfont); 541 GetObjectW (FONT_HANDLE (infont), sizeof (LOGFONTW), &logfont);
541 542
542 hr = gdi_interop->lpVtbl->CreateFontFromLOGFONT (gdi_interop, 543 hr = gdi_interop->lpVtbl->CreateFontFromLOGFONT (gdi_interop,
543 (const LOGFONTW *) &logfont, 544 (const LOGFONTW *) &logfont,
@@ -597,8 +598,8 @@ text_extents_internal (IDWriteFontFace *dwrite_font_face,
597 for (int i = 0; i < nglyphs; i++) 598 for (int i = 0; i < nglyphs; i++)
598 indices[i] = code[i]; 599 indices[i] = code[i];
599 600
600 DWRITE_GLYPH_METRICS* gmetrics = 601 DWRITE_GLYPH_METRICS *gmetrics
601 SAFE_ALLOCA (nglyphs * sizeof (DWRITE_GLYPH_METRICS)); 602 = SAFE_ALLOCA (nglyphs * sizeof (DWRITE_GLYPH_METRICS));
602 603
603 hr = dwrite_font_face->lpVtbl->GetGdiCompatibleGlyphMetrics (dwrite_font_face, 604 hr = dwrite_font_face->lpVtbl->GetGdiCompatibleGlyphMetrics (dwrite_font_face,
604 font_size, 605 font_size,
@@ -620,18 +621,18 @@ text_extents_internal (IDWriteFontFace *dwrite_font_face,
620 621
621 for (int i = 0; i < nglyphs; i++) 622 for (int i = 0; i < nglyphs; i++)
622 { 623 {
623 float advance = 624 float advance
624 convert_metrics_sz (gmetrics[i].advanceWidth, font_size, du_per_em); 625 = convert_metrics_sz (gmetrics[i].advanceWidth, font_size, du_per_em);
625 626
626 width += advance; 627 width += advance;
627 628
628 float lbearing = 629 float lbearing
629 round (convert_metrics_sz (gmetrics[i].leftSideBearing, font_size, 630 = round (convert_metrics_sz (gmetrics[i].leftSideBearing, font_size,
630 du_per_em)); 631 du_per_em));
631 float rbearing = 632 float rbearing
632 round (advance - 633 = round (advance -
633 convert_metrics_sz (gmetrics[i].rightSideBearing, 634 convert_metrics_sz (gmetrics[i].rightSideBearing,
634 font_size, du_per_em)); 635 font_size, du_per_em));
635 if (i == 0) 636 if (i == 0)
636 { 637 {
637 metrics->lbearing = lbearing; 638 metrics->lbearing = lbearing;
@@ -759,7 +760,8 @@ w32_initialize_direct_write (void)
759 return; 760 return;
760 761
761 /* This is only used here, no need to define it globally. */ 762 /* This is only used here, no need to define it globally. */
762 typedef HRESULT (WINAPI *DWCreateFactory) (DWRITE_FACTORY_TYPE f, REFIID r, IUnknown** u); 763 typedef HRESULT (WINAPI *DWCreateFactory) (DWRITE_FACTORY_TYPE,
764 REFIID, IUnknown **);
763 765
764 DWCreateFactory dw_create_factory 766 DWCreateFactory dw_create_factory
765 = (DWCreateFactory) get_proc_addr (direct_write, 767 = (DWCreateFactory) get_proc_addr (direct_write,
@@ -843,7 +845,7 @@ w32_initialize_direct_write (void)
843 config_gamma, 845 config_gamma,
844 config_enhanced_contrast, 846 config_enhanced_contrast,
845 config_clear_type_level, 847 config_clear_type_level,
846 def->lpVtbl->GetPixelGeometry(def), 848 def->lpVtbl->GetPixelGeometry (def),
847 RENDERING_MODE, 849 RENDERING_MODE,
848 &rendering_params); 850 &rendering_params);
849 851
@@ -851,7 +853,8 @@ w32_initialize_direct_write (void)
851 853
852 if (FAILED (hr)) 854 if (FAILED (hr))
853 { 855 {
854 DebPrint (("DirectWrite HRESULT failed: (%d) CreateCustomRenderingParams\n", hr)); 856 DebPrint (("DirectWrite HRESULT failed: (%d)"
857 " CreateCustomRenderingParams\n", hr));
855 RELEASE_COM (dwrite_factory); 858 RELEASE_COM (dwrite_factory);
856 RELEASE_COM (dwrite_factory2); 859 RELEASE_COM (dwrite_factory2);
857 RELEASE_COM (gdi_interop); 860 RELEASE_COM (gdi_interop);
@@ -874,8 +877,8 @@ w32_dwrite_draw (HDC hdc, int x, int y, unsigned *glyphs, int len,
874 877
875 USE_SAFE_ALLOCA; 878 USE_SAFE_ALLOCA;
876 879
877 struct uniscribe_font_info *uniscribe_font = 880 struct uniscribe_font_info *uniscribe_font
878 (struct uniscribe_font_info *) font; 881 = (struct uniscribe_font_info *) font;
879 882
880 /* What we get as y is the baseline position. */ 883 /* What we get as y is the baseline position. */
881 y -= font->ascent; 884 y -= font->ascent;
@@ -907,8 +910,8 @@ w32_dwrite_draw (HDC hdc, int x, int y, unsigned *glyphs, int len,
907 } 910 }
908 911
909 /* This DC can't be released. */ 912 /* This DC can't be released. */
910 HDC text_dc = bitmap_render_target->lpVtbl->GetMemoryDC 913 HDC text_dc
911 (bitmap_render_target); 914 = bitmap_render_target->lpVtbl->GetMemoryDC (bitmap_render_target);
912 915
913 /* Copy the background pixel to the render target bitmap. */ 916 /* Copy the background pixel to the render target bitmap. */
914 BitBlt (text_dc, 0, 0, bitmap_width, bitmap_height, hdc, x, y, SRCCOPY); 917 BitBlt (text_dc, 0, 0, bitmap_width, bitmap_height, hdc, x, y, SRCCOPY);
@@ -1036,10 +1039,10 @@ bool
1036w32_use_direct_write (struct w32font_info *w32font) 1039w32_use_direct_write (struct w32font_info *w32font)
1037{ 1040{
1038#ifdef HAVE_HARFBUZZ 1041#ifdef HAVE_HARFBUZZ
1039 return direct_write_available 1042 return (direct_write_available
1040 && w32font->font.driver == &harfbuzz_font_driver 1043 && w32font->font.driver == &harfbuzz_font_driver
1041 && !w32_inhibit_dwrite 1044 && !w32_inhibit_dwrite
1042 && !((struct uniscribe_font_info *) w32font)->dwrite_skip_font; 1045 && !((struct uniscribe_font_info *) w32font)->dwrite_skip_font);
1043#else 1046#else
1044 return false; 1047 return false;
1045#endif 1048#endif