From 670d942fe3dafbed5ceca234e760f29f793233cb Mon Sep 17 00:00:00 2001 From: Adrian Johnson Date: Mon, 27 Oct 2008 23:04:16 +1030 Subject: [PATCH] Change user-font-image test to use a pattern This can be used to expose a bug in _cairo_rectangle_intersect() by changing: fixed_scale = 1024 to 1 in cairo-user-font.c and cairo_matrix_translate (&matrix, 0, -8) to (&matrix, 0, -9) in user-font-image.c This will cause cairo_text_extents (cr, text, &extents) in user-font-image.c to return a height of 8388683. --- test/user-font-image-ref.png | Bin 5502 -> 6011 bytes test/user-font-image.c | 13 +++++++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/test/user-font-image-ref.png b/test/user-font-image-ref.png index 563172c1b18508e9e883f51b496b5f5425273b8e..e59eab82d0c542c4868360936c034a35f813b52f 100644 GIT binary patch literal 6011 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 diff --git a/test/user-font-image.c b/test/user-font-image.c index ff7302651..2c5033920 100644 --- a/test/user-font-image.c +++ b/test/user-font-image.c @@ -116,6 +116,8 @@ test_scaled_font_render_glyph (cairo_scaled_font_t *scaled_font, int i; unsigned char *data; cairo_surface_t *image; + cairo_pattern_t *pattern; + cairo_matrix_t matrix; uint8_t byte; /* FIXME: We simply crash on out-of-bound glyph indices */ @@ -130,8 +132,15 @@ test_scaled_font_render_glyph (cairo_scaled_font_t *scaled_font, data += cairo_image_surface_get_stride (image); } - cairo_scale (cr, 1.0/8.0, 1.0/8.0); - cairo_mask_surface (cr, image, 0, -8); + pattern = cairo_pattern_create_for_surface (image); + cairo_matrix_init_identity (&matrix); + cairo_matrix_scale (&matrix, 1.0/8.0, 1.0/8.0); + cairo_matrix_translate (&matrix, 0, -8); + cairo_matrix_invert (&matrix); + cairo_pattern_set_matrix (pattern, &matrix); + cairo_set_source (cr, pattern); + cairo_mask (cr, pattern); + cairo_pattern_destroy (pattern); cairo_surface_destroy (image); return CAIRO_STATUS_SUCCESS;