diff options
Diffstat (limited to 'src/cairo-win32-font.c')
-rw-r--r-- | src/cairo-win32-font.c | 42 |
1 files changed, 25 insertions, 17 deletions
diff --git a/src/cairo-win32-font.c b/src/cairo-win32-font.c index 78b3ca212..eef2b4e72 100644 --- a/src/cairo-win32-font.c +++ b/src/cairo-win32-font.c @@ -104,6 +104,8 @@ static void _compute_transform (cairo_win32_scaled_font_t *scaled_font, cairo_matrix_t *sc) { + cairo_status_t status; + if (NEARLY_ZERO (sc->yx) && NEARLY_ZERO (sc->xy)) { scaled_font->preserve_axes = TRUE; scaled_font->x_scale = sc->xx; @@ -154,8 +156,10 @@ _compute_transform (cairo_win32_scaled_font_t *scaled_font, 1.0 / scaled_font->logical_scale, 1.0 / scaled_font->logical_scale); scaled_font->device_to_logical = scaled_font->logical_to_device; - if (!CAIRO_OK (cairo_matrix_invert (&scaled_font->device_to_logical))) - cairo_matrix_init_identity (&scaled_font->device_to_logical); + + status = cairo_matrix_invert (&scaled_font->device_to_logical); + if (status) + cairo_matrix_init_identity (&scaled_font->device_to_logical); } static BYTE @@ -194,8 +198,9 @@ _get_system_quality (void) } return ANTIALIASED_QUALITY; - } else + } else { return DEFAULT_QUALITY; + } } static cairo_scaled_font_t * @@ -367,7 +372,7 @@ _cairo_win32_scaled_font_select_unscaled_font (cairo_scaled_font_t *scaled_font, return _cairo_win32_print_gdi_error ("_cairo_win32_scaled_font_select_unscaled_font"); status = _win32_scaled_font_set_identity_transform (hdc); - if (!CAIRO_OK (status)) { + if (status) { SelectObject (hdc, old_hfont); return status; } @@ -399,7 +404,7 @@ _cairo_win32_scaled_font_create (const char *family, cairo_status_t status; status = _cairo_utf8_to_utf16 (family, -1, &face_name, &face_name_len); - if (!CAIRO_OK (status)) + if (status) return status; if (face_name_len > LF_FACESIZE - 1) { @@ -465,6 +470,9 @@ _cairo_win32_scaled_font_destroy (void *abstract_font) { cairo_win32_scaled_font_t *scaled_font = abstract_font; + if (scaled_font == NULL) + return; + if (scaled_font->scaled_hfont) DeleteObject (scaled_font->scaled_hfont); @@ -496,7 +504,7 @@ _cairo_win32_scaled_font_text_to_glyphs (void *abstract_font, HDC hdc = NULL; status = _cairo_utf8_to_utf16 (utf8, -1, &utf16, &n16); - if (!CAIRO_OK (status)) + if (status) return status; gcp_results.lStructSize = sizeof (GCP_RESULTS); @@ -518,7 +526,7 @@ _cairo_win32_scaled_font_text_to_glyphs (void *abstract_font, } status = cairo_win32_scaled_font_select_font (&scaled_font->base, hdc); - if (!CAIRO_OK (status)) + if (status) goto FAIL1; while (TRUE) { @@ -610,7 +618,7 @@ _cairo_win32_scaled_font_font_extents (void *abstract_font, * from the GDI in logical space, then convert back to font space */ status = cairo_win32_scaled_font_select_font (&scaled_font->base, hdc); - if (!CAIRO_OK (status)) + if (status) return status; GetTextMetrics (hdc, &metrics); cairo_win32_scaled_font_done_font (&scaled_font->base); @@ -629,7 +637,7 @@ _cairo_win32_scaled_font_font_extents (void *abstract_font, * avoid them. */ status = _cairo_win32_scaled_font_select_unscaled_font (&scaled_font->base, hdc); - if (!CAIRO_OK (status)) + if (status) return status; GetTextMetrics (hdc, &metrics); _cairo_win32_scaled_font_done_unscaled_font (&scaled_font->base); @@ -672,7 +680,7 @@ _cairo_win32_scaled_font_glyph_extents (void *abstract_font, * from the GDI in device space and convert to font space. */ status = cairo_win32_scaled_font_select_font (&scaled_font->base, hdc); - if (!CAIRO_OK (status)) + if (status) return status; GetGlyphOutlineW (hdc, glyphs[0].index, GGO_METRICS | GGO_GLYPH_INDEX, &metrics, 0, NULL, &matrix); @@ -714,7 +722,7 @@ _cairo_win32_scaled_font_glyph_extents (void *abstract_font, _cairo_win32_scaled_font_done_unscaled_font (&scaled_font->base); extents->x_bearing = (double)metrics.gmptGlyphOrigin.x / scaled_font->em_square; - extents->y_bearing = (double)metrics.gmptGlyphOrigin.y / scaled_font->em_square; + extents->y_bearing = - (double)metrics.gmptGlyphOrigin.y / scaled_font->em_square; extents->width = (double)metrics.gmBlackBoxX / scaled_font->em_square; extents->height = (double)metrics.gmBlackBoxY / scaled_font->em_square; extents->x_advance = (double)metrics.gmCellIncX / scaled_font->em_square; @@ -745,7 +753,7 @@ _cairo_win32_scaled_font_glyph_bbox (void *abstract_font, return CAIRO_STATUS_NO_MEMORY; status = cairo_win32_scaled_font_select_font (&scaled_font->base, hdc); - if (!CAIRO_OK (status)) + if (status) return status; for (i = 0; i < num_glyphs; i++) { @@ -844,7 +852,7 @@ _add_glyph (cairo_glyph_state_t *state, if (logical_y != state->last_y) { cairo_status_t status = _flush_glyphs (state); - if (!CAIRO_OK (status)) + if (status) return status; state->start_x = logical_x; } @@ -890,7 +898,7 @@ _draw_glyphs_on_surface (cairo_win32_surface_t *surface, return _cairo_win32_print_gdi_error ("_draw_glyphs_on_surface:SaveDC"); status = cairo_win32_scaled_font_select_font (&scaled_font->base, surface->dc); - if (!CAIRO_OK (status)) + if (status) goto FAIL1; SetTextColor (surface->dc, color); @@ -902,7 +910,7 @@ _draw_glyphs_on_surface (cairo_win32_surface_t *surface, for (i = 0; i < num_glyphs; i++) { status = _add_glyph (&state, glyphs[i].index, glyphs[i].x - x_offset, glyphs[i].y - y_offset); - if (!CAIRO_OK (status)) + if (status) goto FAIL2; } @@ -1152,7 +1160,7 @@ static const cairo_font_face_backend_t _cairo_win32_font_face_backend = { }; /** - * cairo_win32_scaled_font_create_for_logfontw: + * cairo_win32_font_face_create_for_logfontw: * @logfont: A #LOGFONTW structure specifying the font to use. * The lfHeight, lfWidth, lfOrientation and lfEscapement * fields of this structure are ignored. @@ -1231,7 +1239,7 @@ cairo_win32_scaled_font_select_font (cairo_scaled_font_t *scaled_font, } status = _win32_scaled_font_set_world_transform ((cairo_win32_scaled_font_t *)scaled_font, hdc); - if (!CAIRO_OK (status)) { + if (status) { SetGraphicsMode (hdc, old_mode); SelectObject (hdc, old_hfont); return status; |