summaryrefslogtreecommitdiff
path: root/src/win32
diff options
context:
space:
mode:
authorAdrian Johnson <ajohnson@redneon.com>2022-04-17 13:33:02 +0930
committerAdrian Johnson <ajohnson@redneon.com>2022-04-19 19:58:40 +0930
commit672c92e19c9fab1a5fa0b3bfc5076b3cab3b5319 (patch)
tree76000f7c3b392bab8c48b8912eecedc9aefca648 /src/win32
parentd2f65a73069fdd63f83a4129d7770a602fcaffcf (diff)
downloadcairo-672c92e19c9fab1a5fa0b3bfc5076b3cab3b5319.tar.gz
Fix DWrite error handling
- Fix a few cases of incorrect error handling - Use a consistent style and variable names for errors
Diffstat (limited to 'src/win32')
-rw-r--r--src/win32/cairo-dwrite-font.cpp87
1 files changed, 46 insertions, 41 deletions
diff --git a/src/win32/cairo-dwrite-font.cpp b/src/win32/cairo-dwrite-font.cpp
index d4f21c561..1e9781ec8 100644
--- a/src/win32/cairo-dwrite-font.cpp
+++ b/src/win32/cairo-dwrite-font.cpp
@@ -371,15 +371,16 @@ _cairo_dwrite_font_face_create_for_toy (cairo_toy_font_face_t *toy_face,
IDWriteFont *font;
HRESULT hr = family->GetFirstMatchingFont(weight, DWRITE_FONT_STRETCH_NORMAL, style, &font);
- if (SUCCEEDED(hr)) {
- IDWriteFontFace *dwriteface;
- hr = font->CreateFontFace(&dwriteface);
- if (SUCCEEDED(hr)) {
- *font_face = cairo_dwrite_font_face_create_for_dwrite_fontface(dwriteface);
- return CAIRO_STATUS_SUCCESS;
- }
- }
- return (cairo_status_t)CAIRO_INT_STATUS_UNSUPPORTED;
+ if (FAILED(hr))
+ return (cairo_status_t)_cairo_dwrite_error (hr, "GetFirstMatchingFont failed");
+
+ IDWriteFontFace *dwriteface;
+ hr = font->CreateFontFace(&dwriteface);
+ if (FAILED(hr))
+ return (cairo_status_t)_cairo_dwrite_error (hr, "CreateFontFace failed");
+
+ *font_face = cairo_dwrite_font_face_create_for_dwrite_fontface(dwriteface);
+ return CAIRO_STATUS_SUCCESS;
}
static cairo_bool_t
@@ -913,7 +914,7 @@ _cairo_dwrite_scaled_font_init_glyph_color_surface(cairo_dwrite_scaled_font_t *s
if (hr == DWRITE_E_NOCOLOR)
return CAIRO_INT_STATUS_UNSUPPORTED; /* No color glyphs */
- if (!SUCCEEDED(hr))
+ if (FAILED(hr))
return _cairo_dwrite_error (hr, "TranslateColorGlyphRun failed");
/* We have a color glyph(s). Use Direct2D to render it to a bitmap */
@@ -926,7 +927,7 @@ _cairo_dwrite_scaled_font_init_glyph_color_surface(cairo_dwrite_scaled_font_t *s
GUID_WICPixelFormat32bppPBGRA,
WICBitmapCacheOnLoad,
&bitmap);
- if (!SUCCEEDED(hr))
+ if (FAILED(hr))
return _cairo_dwrite_error (hr, "CreateBitmap failed");
D2D1_RENDER_TARGET_PROPERTIES properties = D2D1::RenderTargetProperties(
@@ -941,12 +942,13 @@ _cairo_dwrite_scaled_font_init_glyph_color_surface(cairo_dwrite_scaled_font_t *s
ID2D1RenderTarget* rt = NULL;
hr = D2DFactory::Instance()->CreateWicBitmapRenderTarget (bitmap, properties, &rt);
- if (!SUCCEEDED(hr))
+ if (FAILED(hr))
return _cairo_dwrite_error (hr, "CreateWicBitmapRenderTarget failed");
ID2D1DeviceContext4* dc4 = NULL;
- if (!SUCCEEDED(rt->QueryInterface(&dc4)))
- return _cairo_dwrite_error (hr, "QueryInterface failed");
+ hr = rt->QueryInterface(&dc4);
+ if (FAILED(hr))
+ return _cairo_dwrite_error (hr, "QueryInterface(&dc4) failed");
ID2D1SolidColorBrush *foreground_color_brush;
if (foreground_color) {
@@ -976,11 +978,12 @@ _cairo_dwrite_scaled_font_init_glyph_color_surface(cairo_dwrite_scaled_font_t *s
while (true) {
BOOL have_run;
hr = run_enumerator->MoveNext(&have_run);
- if (!SUCCEEDED(hr) || !have_run)
+ if (FAILED(hr) || !have_run)
break;
DWRITE_COLOR_GLYPH_RUN1 const* color_run;
- if (!SUCCEEDED(run_enumerator->GetCurrentRun (&color_run)))
+ hr = run_enumerator->GetCurrentRun(&color_run);
+ if (FAILED(hr))
return _cairo_dwrite_error (hr, "GetCurrentRun failed");
switch (color_run->glyphImageFormat) {
@@ -1029,8 +1032,8 @@ _cairo_dwrite_scaled_font_init_glyph_color_surface(cairo_dwrite_scaled_font_t *s
}
hr = dc4->EndDraw();
- if (!SUCCEEDED(hr))
- return _cairo_dwrite_error (hr, "dc4 failed");
+ if (FAILED(hr))
+ return _cairo_dwrite_error (hr, "EndDraw failed");
color_brush->Release();
foreground_color_brush->Release();
@@ -1197,11 +1200,14 @@ _cairo_dwrite_load_truetype_table(void *scaled_font,
UINT32 size;
void *tableContext;
BOOL exists;
- face->dwriteface->TryGetFontTable(be32_to_cpu (tag),
- &data,
- &size,
- &tableContext,
- &exists);
+ HRESULT hr;
+ hr = face->dwriteface->TryGetFontTable (be32_to_cpu (tag),
+ &data,
+ &size,
+ &tableContext,
+ &exists);
+ if (FAILED(hr))
+ return _cairo_dwrite_error (hr, "TryGetFontTable failed");
if (!exists) {
return CAIRO_INT_STATUS_UNSUPPORTED;
@@ -1234,7 +1240,7 @@ _cairo_dwrite_is_synthetic(void *scaled_font,
}
IDWriteFontFace5 *fontFace5 = NULL;
- if (!SUCCEEDED(face->dwriteface->QueryInterface(&fontFace5))) {
+ if (FAILED(face->dwriteface->QueryInterface(&fontFace5))) {
/* If IDWriteFontFace5 is not available, assume this version of
* DirectWrite does not support variations.
*/
@@ -1249,7 +1255,7 @@ _cairo_dwrite_is_synthetic(void *scaled_font,
IDWriteFontResource *fontResource = NULL;
hr = fontFace5->GetFontResource(&fontResource);
- if (!SUCCEEDED(hr))
+ if (FAILED(hr))
return _cairo_dwrite_error (hr, "GetFontResource failed");
UINT32 axis_count = fontResource->GetFontAxisCount();
@@ -1257,13 +1263,13 @@ _cairo_dwrite_is_synthetic(void *scaled_font,
DWRITE_FONT_AXIS_VALUE *axis_values = new DWRITE_FONT_AXIS_VALUE[axis_count];
hr = fontResource->GetDefaultFontAxisValues(axis_defaults, axis_count);
- if (!SUCCEEDED(hr)) {
+ if (FAILED(hr)) {
status = _cairo_dwrite_error (hr, "GetDefaultFontAxisValues failed");
goto cleanup;
}
hr = fontFace5->GetFontAxisValues(axis_values, axis_count);
- if (!SUCCEEDED(hr)) {
+ if (FAILED(hr)) {
status = _cairo_dwrite_error (hr, "GetFontAxisValues failed");
goto cleanup;
}
@@ -1371,18 +1377,18 @@ _dwrite_draw_glyphs_to_gdi_surface_gdi(cairo_win32_surface_t *surface,
IDWriteGdiInterop *gdiInterop;
DWriteFactory::Instance()->GetGdiInterop(&gdiInterop);
IDWriteBitmapRenderTarget *rt;
- HRESULT rv;
+ HRESULT hr;
cairo_dwrite_scaled_font_t::TextRenderingState renderingState =
scaled_font->rendering_mode;
- rv = gdiInterop->CreateBitmapRenderTarget(surface->dc,
+ hr = gdiInterop->CreateBitmapRenderTarget(surface->dc,
area.right - area.left,
area.bottom - area.top,
&rt);
- if (FAILED(rv)) {
- if (rv == E_OUTOFMEMORY) {
+ if (FAILED(hr)) {
+ if (hr == E_OUTOFMEMORY) {
return (cairo_int_status_t)CAIRO_STATUS_NO_MEMORY;
} else {
return CAIRO_INT_STATUS_UNSUPPORTED;
@@ -1394,9 +1400,9 @@ _dwrite_draw_glyphs_to_gdi_surface_gdi(cairo_win32_surface_t *surface,
/* && !surface->base.permit_subpixel_antialiasing */ ) {
renderingState = cairo_dwrite_scaled_font_t::TEXT_RENDERING_NO_CLEARTYPE;
IDWriteBitmapRenderTarget1* rt1;
- rv = rt->QueryInterface(&rt1);
+ hr = rt->QueryInterface(&rt1);
- if (SUCCEEDED(rv) && rt1) {
+ if (SUCCEEDED(hr) && rt1) {
rt1->SetTextAntialiasMode(DWRITE_TEXT_ANTIALIAS_MODE_GRAYSCALE);
rt1->Release();
}
@@ -1452,15 +1458,15 @@ _dwrite_draw_glyphs_to_gdi_surface_d2d(cairo_win32_surface_t *surface,
COLORREF color,
const RECT &area)
{
- HRESULT rv;
+ HRESULT hr;
ID2D1DCRenderTarget *rt = D2DFactory::RenderTarget();
// XXX don't we need to set RenderingParams on this RenderTarget?
- rv = rt->BindDC(surface->dc, &area);
+ hr = rt->BindDC(surface->dc, &area);
- if (FAILED(rv)) {
+ if (FAILED(hr)) {
rt->Release();
return CAIRO_INT_STATUS_UNSUPPORTED;
}
@@ -1470,9 +1476,8 @@ _dwrite_draw_glyphs_to_gdi_surface_d2d(cairo_win32_surface_t *surface,
(color & 0xFF00) |
(color & 0xFF0000) >> 16;
ID2D1SolidColorBrush *brush;
- rv = rt->CreateSolidColorBrush(D2D1::ColorF(color, 1.0), &brush);
-
- if (FAILED(rv)) {
+ hr = rt->CreateSolidColorBrush(D2D1::ColorF(color, 1.0), &brush);
+ if (FAILED(hr)) {
rt->Release();
return CAIRO_INT_STATUS_UNSUPPORTED;
}
@@ -1487,12 +1492,12 @@ _dwrite_draw_glyphs_to_gdi_surface_d2d(cairo_win32_surface_t *surface,
}
rt->BeginDraw();
rt->DrawGlyphRun(D2D1::Point2F(0, 0), run, brush);
- rt->EndDraw();
+ hr = rt->EndDraw();
if (transform) {
rt->SetTransform(D2D1::Matrix3x2F::Identity());
}
brush->Release();
- if (FAILED(rv)) {
+ if (FAILED(hr)) {
return CAIRO_INT_STATUS_UNSUPPORTED;
}