From a8a0082c53d060e07c10c6efda9bb808e354fd59 Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Mon, 31 Jul 2006 14:41:27 -0400 Subject: [PATCH 01/15] Remove dummy create_similar in PS/PDF and let fallback do the same which is simply creating an image surface. --- src/cairo-pdf-surface.c | 15 +-------------- src/cairo-ps-surface.c | 15 +-------------- 2 files changed, 2 insertions(+), 28 deletions(-) diff --git a/src/cairo-pdf-surface.c b/src/cairo-pdf-surface.c index aaf71c7ec..9646c216e 100644 --- a/src/cairo-pdf-surface.c +++ b/src/cairo-pdf-surface.c @@ -453,19 +453,6 @@ _cairo_pdf_surface_clear (cairo_pdf_surface_t *surface) _cairo_array_truncate (&surface->streams, 0); } -static cairo_surface_t * -_cairo_pdf_surface_create_similar (void *abstract_src, - cairo_content_t content, - int width, - int height) -{ - cairo_format_t format = _cairo_format_from_content (content); - - /* Just return an image for now, until PDF surface can be used - * as source. */ - return cairo_image_surface_create (format, width, height); -} - static cairo_pdf_resource_t _cairo_pdf_surface_open_stream (cairo_pdf_surface_t *surface, const char *fmt, @@ -2638,7 +2625,7 @@ _cairo_pdf_surface_set_paginated_mode (void *abstract_surface, static const cairo_surface_backend_t cairo_pdf_surface_backend = { CAIRO_SURFACE_TYPE_PDF, - _cairo_pdf_surface_create_similar, + NULL, /* create_similar */ _cairo_pdf_surface_finish, NULL, /* acquire_source_image */ NULL, /* release_source_image */ diff --git a/src/cairo-ps-surface.c b/src/cairo-ps-surface.c index 3856aa231..6802b5b4d 100644 --- a/src/cairo-ps-surface.c +++ b/src/cairo-ps-surface.c @@ -1126,19 +1126,6 @@ cairo_ps_surface_dsc_begin_page_setup (cairo_surface_t *surface) } } -static cairo_surface_t * -_cairo_ps_surface_create_similar (void *abstract_src, - cairo_content_t content, - int width, - int height) -{ - cairo_format_t format = _cairo_format_from_content (content); - - /* Just return an image for now, until PS surface can be used - * as source. */ - return cairo_image_surface_create (format, width, height); -} - static cairo_status_t _cairo_ps_surface_finish (void *abstract_surface) { @@ -2113,7 +2100,7 @@ _cairo_ps_surface_set_paginated_mode (void *abstract_surface, static const cairo_surface_backend_t cairo_ps_surface_backend = { CAIRO_SURFACE_TYPE_PS, - _cairo_ps_surface_create_similar, + NULL, /* create_similar */ _cairo_ps_surface_finish, NULL, /* acquire_source_image */ NULL, /* release_source_image */ From bdb4e1edadb78a2118ff70b28163f8bd4317f1ec Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Mon, 31 Jul 2006 14:44:42 -0400 Subject: [PATCH 02/15] Implement per-surface font options. New internal function _cairo_surface_set_font_options is used to set them. cairo_surface_create_similar propagates the font options of the other surface into the newly created surface. Fixes bugs with font options in fallback images and bug 4106. --- src/cairo-surface.c | 55 ++++++++++++++++++++++++++++++++++++++++----- src/cairoint.h | 12 ++++++++++ 2 files changed, 61 insertions(+), 6 deletions(-) diff --git a/src/cairo-surface.c b/src/cairo-surface.c index fb25e075b..914e2c713 100644 --- a/src/cairo-surface.c +++ b/src/cairo-surface.c @@ -234,6 +234,8 @@ _cairo_surface_init (cairo_surface_t *surface, surface->current_clip_serial = 0; surface->is_snapshot = FALSE; + + surface->has_font_options = FALSE; } cairo_surface_t * @@ -242,15 +244,23 @@ _cairo_surface_create_similar_scratch (cairo_surface_t *other, int width, int height) { + cairo_surface_t *surface; + cairo_font_options_t options; + cairo_format_t format = _cairo_format_from_content (content); if (other->status) return (cairo_surface_t*) &_cairo_surface_nil; if (other->backend->create_similar) - return other->backend->create_similar (other, content, width, height); + surface = other->backend->create_similar (other, content, width, height); else - return cairo_image_surface_create (format, width, height); + surface = cairo_image_surface_create (format, width, height); + + cairo_surface_get_font_options (other, &options); + _cairo_surface_set_font_options (surface, &options); + + return surface; } /** @@ -502,6 +512,33 @@ cairo_surface_set_user_data (cairo_surface_t *surface, key, user_data, destroy); } +/** + * _cairo_surface_set_font_options: + * @surface: a #cairo_surface_t + * @options: a #cairo_font_options_t object that contains the + * options to use for this surface instead of backend's default + * font options. + * + * Sets the default font rendering options for the surface. + * This is useful to correctly propagate default font options when + * falling back to an image surface in a backend implementation. + * This affects the options returned in cairo_surface_get_font_options(). + * + * If @options is %NULL the surface options are reset to those of + * the backend default. + **/ +void +_cairo_surface_set_font_options (cairo_surface_t *surface, + cairo_font_options_t *options) +{ + if (options) { + surface->has_font_options = TRUE; + _cairo_font_options_init_copy (&surface->font_options, options); + } else { + surface->has_font_options = FALSE; + } +} + /** * cairo_surface_get_font_options: * @surface: a #cairo_surface_t @@ -518,11 +555,17 @@ void cairo_surface_get_font_options (cairo_surface_t *surface, cairo_font_options_t *options) { - if (!surface->finished && surface->backend->get_font_options) { - surface->backend->get_font_options (surface, options); - } else { - _cairo_font_options_init_default (options); + if (!surface->has_font_options) { + surface->has_font_options = TRUE; + + if (!surface->finished && surface->backend->get_font_options) { + surface->backend->get_font_options (surface, &surface->font_options); + } else { + _cairo_font_options_init_default (&surface->font_options); + } } + + _cairo_font_options_init_copy (options, &surface->font_options); } /** diff --git a/src/cairoint.h b/src/cairoint.h index 4eb0c3cb3..7cf955dd3 100644 --- a/src/cairoint.h +++ b/src/cairoint.h @@ -893,6 +893,14 @@ struct _cairo_surface { /* A "snapshot" surface is immutable. See _cairo_surface_snapshot. */ cairo_bool_t is_snapshot; + + /* + * Surface font options, falling back to backend's default options, + * and set using _cairo_surface_set_font_options(), and propagated by + * cairo_surface_create_similar(). + */ + cairo_bool_t has_font_options; + cairo_font_options_t font_options; }; struct _cairo_image_surface { @@ -1670,6 +1678,10 @@ _cairo_surface_init (cairo_surface_t *surface, const cairo_surface_backend_t *backend, cairo_content_t content); +void +_cairo_surface_set_font_options (cairo_surface_t *surface, + cairo_font_options_t *options); + cairo_private cairo_clip_mode_t _cairo_surface_get_clip_mode (cairo_surface_t *surface); From b3341b4eda274036a74eea3187d47ef257688828 Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Mon, 31 Jul 2006 14:45:54 -0400 Subject: [PATCH 03/15] Let backends return NULL in create_similar to take the fallback path. Make xlib backend use it. --- src/cairo-surface.c | 5 +++-- src/cairo-xlib-surface.c | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/cairo-surface.c b/src/cairo-surface.c index 914e2c713..ceceab576 100644 --- a/src/cairo-surface.c +++ b/src/cairo-surface.c @@ -244,7 +244,7 @@ _cairo_surface_create_similar_scratch (cairo_surface_t *other, int width, int height) { - cairo_surface_t *surface; + cairo_surface_t *surface = NULL; cairo_font_options_t options; cairo_format_t format = _cairo_format_from_content (content); @@ -254,7 +254,8 @@ _cairo_surface_create_similar_scratch (cairo_surface_t *other, if (other->backend->create_similar) surface = other->backend->create_similar (other, content, width, height); - else + + if (!surface) surface = cairo_image_surface_create (format, width, height); cairo_surface_get_font_options (other, &options); diff --git a/src/cairo-xlib-surface.c b/src/cairo-xlib-surface.c index 58ad45996..3d0d71df8 100644 --- a/src/cairo-xlib-surface.c +++ b/src/cairo-xlib-surface.c @@ -219,10 +219,11 @@ _cairo_xlib_surface_create_similar_with_format (void *abstract_src, /* As a good first approximation, if the display doesn't have even * the most elementary RENDER operation, then we're better off - * using image surfaces for all temporary operations + * using image surfaces for all temporary operations, so return NULL + * and let the fallback code happen. */ if (!CAIRO_SURFACE_RENDER_HAS_COMPOSITE(src)) { - return cairo_image_surface_create (format, width, height); + return NULL; } pix = XCreatePixmap (dpy, RootWindowOfScreen (src->screen), From a61ac1aeedca3a032b9d53715afb5d52c06efec0 Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Mon, 31 Jul 2006 14:47:10 -0400 Subject: [PATCH 04/15] Set font_options on image surfaces we create. This may not be really necessary as we only create image surfaces as temporary surfaces and their font options should not be sampled normally. --- src/cairo-paginated-surface.c | 37 ++++++++++++++++++++++++++--------- 1 file changed, 28 insertions(+), 9 deletions(-) diff --git a/src/cairo-paginated-surface.c b/src/cairo-paginated-surface.c index 4938b381a..79b39560d 100644 --- a/src/cairo-paginated-surface.c +++ b/src/cairo-paginated-surface.c @@ -163,6 +163,25 @@ _cairo_paginated_surface_finish (void *abstract_surface) return CAIRO_STATUS_SUCCESS; } +static cairo_surface_t * +_cairo_paginated_surface_create_image_surface (void *abstract_surface, + int width, + int height) +{ + cairo_paginated_surface_t *surface = abstract_surface; + cairo_surface_t *image; + cairo_font_options_t options; + + image = _cairo_image_surface_create_with_content (surface->content, + width, + height); + + cairo_surface_get_font_options (surface, &options); + _cairo_surface_set_font_options (image, &options); + + return image; +} + static cairo_status_t _cairo_paginated_surface_acquire_source_image (void *abstract_surface, cairo_image_surface_t **image_out, @@ -174,9 +193,9 @@ _cairo_paginated_surface_acquire_source_image (void *abstract_surface, _cairo_surface_get_extents (surface->target, &extents); - image = _cairo_image_surface_create_with_content (surface->content, - extents.width, - extents.height); + image = _cairo_paginated_surface_create_image_surface (surface, + extents.width, + extents.height); _cairo_meta_surface_replay (surface->meta, image); @@ -221,9 +240,9 @@ _paint_page (cairo_paginated_surface_t *surface) double y_scale = surface->base.y_fallback_resolution / 72.0; cairo_matrix_t matrix; - image = _cairo_image_surface_create_with_content (surface->content, - surface->width * x_scale, - surface->height * y_scale); + image = _cairo_paginated_surface_create_image_surface (surface, + surface->width * x_scale, + surface->height * y_scale); _cairo_surface_set_device_scale (image, x_scale, y_scale); _cairo_meta_surface_replay (surface->meta, image); @@ -460,9 +479,9 @@ _cairo_paginated_surface_snapshot (void *abstract_other) _cairo_surface_get_extents (other->target, &extents); - surface = _cairo_image_surface_create_with_content (other->content, - extents.width, - extents.height); + surface = _cairo_paginated_surface_create_image_surface (other, + extents.width, + extents.height); _cairo_meta_surface_replay (other->meta, surface); From 9fcb3c32c1f16fe6ab913e27eb54d18b7d9a06b0 Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Mon, 31 Jul 2006 14:50:50 -0400 Subject: [PATCH 05/15] Set fallback resolution in create_similar. Update docs to reflect that. --- src/cairo-surface.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/cairo-surface.c b/src/cairo-surface.c index ceceab576..cad5a33c8 100644 --- a/src/cairo-surface.c +++ b/src/cairo-surface.c @@ -261,6 +261,10 @@ _cairo_surface_create_similar_scratch (cairo_surface_t *other, cairo_surface_get_font_options (other, &options); _cairo_surface_set_font_options (surface, &options); + cairo_surface_set_fallback_resolution (surface, + other->x_fallback_resolution, + other->y_fallback_resolution); + return surface; } @@ -273,8 +277,10 @@ _cairo_surface_create_similar_scratch (cairo_surface_t *other, * * Create a new surface that is as compatible as possible with an * existing surface. The new surface will use the same backend as - * @other unless that is not possible for some reason. The type of the - * returned surface may be examined with cairo_surface_get_type(). + * @other unless that is not possible for some reason. However, the + * created surface will have same fallback resolution and font options + * as the existing surface. The type of the returned surface may be + * examined with cairo_surface_get_type(). * Initially the surface contents are all 0 (transparent if contents * have transparency, black otherwise.) * From 2fa709d6af58713f7b362748a728a6f8c983d2ec Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Mon, 31 Jul 2006 15:17:15 -0400 Subject: [PATCH 06/15] Set font options in the test context and make tests not do that This should help with not requiring many backend-specific reference images, and some should be removed now. --- test/cairo-test.c | 10 ++++++++++ test/clip-operator.c | 9 --------- test/font-matrix-translation.c | 9 --------- test/ft-font-create-for-ft-face.c | 2 ++ test/ft-text-antialias-none.c | 3 +-- test/ft-text-vertical-layout.c | 5 +---- test/glyph-cache-pressure.c | 10 ---------- test/operator-clear.c | 9 --------- test/operator-source.c | 9 --------- test/select-font-face.c | 11 ----------- test/show-glyphs-many.c | 9 --------- test/show-text-current-point.c | 10 ---------- test/text-antialias-gray.c | 5 +---- test/text-antialias-none.c | 5 +---- test/text-antialias-subpixel.c | 8 ++------ test/text-pattern.c | 9 --------- test/text-rotate.c | 3 +-- test/unbounded-operator.c | 9 --------- 18 files changed, 19 insertions(+), 116 deletions(-) diff --git a/test/cairo-test.c b/test/cairo-test.c index ea580bed8..0bda5609c 100644 --- a/test/cairo-test.c +++ b/test/cairo-test.c @@ -1481,6 +1481,7 @@ cairo_test_for_target (cairo_test_t *test, char *format; cairo_test_status_t ret; cairo_content_t expected_content; + cairo_font_options_t *font_options; /* Get the strings ready that we'll need. */ format = _cairo_test_content_name (target->content); @@ -1567,6 +1568,15 @@ cairo_test_for_target (cairo_test_t *test, cairo_paint (cr); cairo_restore (cr); + /* Set all components of font_options to avoid backend differences + * and reduce number of needed reference images. */ + font_options = cairo_font_options_create (); + cairo_font_options_set_hint_style (font_options, CAIRO_HINT_STYLE_NONE); + cairo_font_options_set_hint_metrics (font_options, CAIRO_HINT_METRICS_ON); + cairo_font_options_set_antialias (font_options, CAIRO_ANTIALIAS_GRAY); + cairo_set_font_options (cr, font_options); + cairo_font_options_destroy (font_options); + status = (test->draw) (cr, test->width, test->height); /* Then, check all the different ways it could fail. */ diff --git a/test/clip-operator.c b/test/clip-operator.c index 52cbba61d..4d262f855 100644 --- a/test/clip-operator.c +++ b/test/clip-operator.c @@ -144,7 +144,6 @@ draw (cairo_t *cr, int width, int height) { int j, x, y; cairo_operator_t op; - cairo_font_options_t *font_options; cairo_pattern_t *pattern; cairo_select_font_face (cr, "Bitstream Vera Sans", @@ -152,14 +151,6 @@ draw (cairo_t *cr, int width, int height) CAIRO_FONT_WEIGHT_NORMAL); cairo_set_font_size (cr, 0.9 * HEIGHT); - font_options = cairo_font_options_create (); - - cairo_font_options_set_hint_style (font_options, CAIRO_HINT_STYLE_NONE); - cairo_font_options_set_antialias (font_options, CAIRO_ANTIALIAS_GRAY); - - cairo_set_font_options (cr, font_options); - cairo_font_options_destroy (font_options); - for (j = 0; j < ARRAY_SIZE (draw_funcs); j++) { for (op = CAIRO_OPERATOR_CLEAR; op < N_OPERATORS; op++) { x = op * (WIDTH + PAD) + PAD; diff --git a/test/font-matrix-translation.c b/test/font-matrix-translation.c index dbdeb8731..067cbb5be 100644 --- a/test/font-matrix-translation.c +++ b/test/font-matrix-translation.c @@ -64,7 +64,6 @@ box_text (cairo_t *cr, const char *utf8, double x, double y) static cairo_test_status_t draw (cairo_t *cr, int width, int height) { - cairo_font_options_t *font_options; cairo_text_extents_t extents; cairo_matrix_t matrix; @@ -76,14 +75,6 @@ draw (cairo_t *cr, int width, int height) CAIRO_FONT_WEIGHT_NORMAL); cairo_set_font_size (cr, TEXT_SIZE); - font_options = cairo_font_options_create (); - - cairo_font_options_set_hint_style (font_options, CAIRO_HINT_STYLE_NONE); - cairo_font_options_set_antialias (font_options, CAIRO_ANTIALIAS_GRAY); - - cairo_set_font_options (cr, font_options); - cairo_font_options_destroy (font_options); - cairo_translate (cr, PAD, PAD); cairo_set_line_width (cr, 1.0); diff --git a/test/ft-font-create-for-ft-face.c b/test/ft-font-create-for-ft-face.c index 64a32241c..066b175d3 100644 --- a/test/ft-font-create-for-ft-face.c +++ b/test/ft-font-create-for-ft-face.c @@ -80,6 +80,8 @@ draw (cairo_t *cr, int width, int height) font_options = cairo_font_options_create (); + cairo_get_font_options (cr, font_options); + scaled_font = cairo_scaled_font_create (font_face, &font_matrix, &ctm, diff --git a/test/ft-text-antialias-none.c b/test/ft-text-antialias-none.c index 55a6fa3c8..e4a34e968 100644 --- a/test/ft-text-antialias-none.c +++ b/test/ft-text-antialias-none.c @@ -55,8 +55,7 @@ create_scaled_font (cairo_t * cr) font_options = cairo_font_options_create (); - /* disable hinting */ - cairo_font_options_set_hint_style (font_options, CAIRO_HINT_STYLE_NONE); + cairo_get_font_options (cr, font_options); pattern = FcPatternCreate (); diff --git a/test/ft-text-vertical-layout.c b/test/ft-text-vertical-layout.c index d7638eeec..334fe6010 100644 --- a/test/ft-text-vertical-layout.c +++ b/test/ft-text-vertical-layout.c @@ -55,10 +55,7 @@ create_scaled_font (cairo_t * cr) font_options = cairo_font_options_create (); - /* disable hinting */ - cairo_font_options_set_hint_style (font_options, CAIRO_HINT_STYLE_NONE); - /* enable antialias and override screen settings */ - cairo_font_options_set_antialias (font_options, CAIRO_ANTIALIAS_GRAY); + cairo_get_font_options (cr, font_options); pattern = FcPatternCreate (); diff --git a/test/glyph-cache-pressure.c b/test/glyph-cache-pressure.c index 5b5e6c45d..ba90fa362 100644 --- a/test/glyph-cache-pressure.c +++ b/test/glyph-cache-pressure.c @@ -61,8 +61,6 @@ cairo_test_t test = { static cairo_test_status_t draw (cairo_t *cr, int width, int height) { - cairo_font_options_t *font_options; - /* We draw in the default black, so paint white first. */ cairo_save (cr); cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); /* white */ @@ -76,14 +74,6 @@ draw (cairo_t *cr, int width, int height) CAIRO_FONT_WEIGHT_NORMAL); cairo_set_font_size (cr, TEXT_SIZE); - font_options = cairo_font_options_create (); - - cairo_font_options_set_hint_style (font_options, CAIRO_HINT_STYLE_NONE); - cairo_font_options_set_antialias (font_options, CAIRO_ANTIALIAS_GRAY); - - cairo_set_font_options (cr, font_options); - cairo_font_options_destroy (font_options); - cairo_set_source_rgb (cr, 0, 0, 0); /* black */ cairo_move_to (cr, 1, TEXT_SIZE); diff --git a/test/operator-clear.c b/test/operator-clear.c index 575ce1d0a..ea9fcf8fc 100644 --- a/test/operator-clear.c +++ b/test/operator-clear.c @@ -159,21 +159,12 @@ static cairo_test_status_t draw (cairo_t *cr, int width, int height) { int i, j, x, y; - cairo_font_options_t *font_options; cairo_pattern_t *pattern; cairo_select_font_face (cr, "Bitstream Vera Sans", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL); - font_options = cairo_font_options_create (); - - cairo_font_options_set_hint_style (font_options, CAIRO_HINT_STYLE_NONE); - cairo_font_options_set_antialias (font_options, CAIRO_ANTIALIAS_GRAY); - - cairo_set_font_options (cr, font_options); - cairo_font_options_destroy (font_options); - for (j = 0; j < ARRAY_SIZE (draw_funcs); j++) { for (i = 0; i < ARRAY_SIZE (pattern_funcs); i++) { x = i * (WIDTH + PAD) + PAD; diff --git a/test/operator-source.c b/test/operator-source.c index 6784622e5..4bea7935e 100644 --- a/test/operator-source.c +++ b/test/operator-source.c @@ -198,21 +198,12 @@ static cairo_test_status_t draw (cairo_t *cr, int width, int height) { int i, j, x, y; - cairo_font_options_t *font_options; cairo_pattern_t *pattern; cairo_select_font_face (cr, "Bitstream Vera Sans", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL); - font_options = cairo_font_options_create (); - - cairo_font_options_set_hint_style (font_options, CAIRO_HINT_STYLE_NONE); - cairo_font_options_set_antialias (font_options, CAIRO_ANTIALIAS_GRAY); - - cairo_set_font_options (cr, font_options); - cairo_font_options_destroy (font_options); - for (j = 0; j < ARRAY_SIZE (draw_funcs); j++) { for (i = 0; i < ARRAY_SIZE (pattern_funcs); i++) { x = i * (WIDTH + PAD) + PAD; diff --git a/test/select-font-face.c b/test/select-font-face.c index 30daf25dd..57120ca15 100644 --- a/test/select-font-face.c +++ b/test/select-font-face.c @@ -39,23 +39,12 @@ cairo_test_t test = { static cairo_test_status_t draw (cairo_t *cr, int width, int height) { - cairo_font_options_t *font_options; - /* We draw in the default black, so paint white first. */ cairo_save (cr); cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); /* white */ cairo_paint (cr); cairo_restore (cr); - font_options = cairo_font_options_create (); - - cairo_font_options_set_hint_style (font_options, CAIRO_HINT_STYLE_NONE); - cairo_font_options_set_hint_metrics (font_options, CAIRO_HINT_METRICS_OFF); - cairo_font_options_set_antialias (font_options, CAIRO_ANTIALIAS_GRAY); - - cairo_set_font_options (cr, font_options); - cairo_font_options_destroy (font_options); - cairo_set_source_rgb (cr, 0, 0, 0); /* black */ cairo_select_font_face (cr, "Bitstream Vera Serif", diff --git a/test/show-glyphs-many.c b/test/show-glyphs-many.c index f9137e6c9..9931a2594 100644 --- a/test/show-glyphs-many.c +++ b/test/show-glyphs-many.c @@ -91,7 +91,6 @@ static cairo_test_status_t draw (cairo_t *cr, int width, int height) { cairo_glyph_t glyphs[NUM_GLYPHS]; - cairo_font_options_t *font_options; int i; /* Initialize our giant array of glyphs. */ @@ -110,14 +109,6 @@ draw (cairo_t *cr, int width, int height) CAIRO_FONT_WEIGHT_NORMAL); cairo_set_font_size (cr, TEXT_SIZE); - font_options = cairo_font_options_create (); - - cairo_font_options_set_hint_style (font_options, CAIRO_HINT_STYLE_NONE); - cairo_font_options_set_antialias (font_options, CAIRO_ANTIALIAS_GRAY); - - cairo_set_font_options (cr, font_options); - cairo_font_options_destroy (font_options); - cairo_show_glyphs (cr, glyphs, NUM_GLYPHS); return CAIRO_TEST_SUCCESS; diff --git a/test/show-text-current-point.c b/test/show-text-current-point.c index ebd364452..5ff367588 100644 --- a/test/show-text-current-point.c +++ b/test/show-text-current-point.c @@ -39,8 +39,6 @@ cairo_test_t test = { static cairo_test_status_t draw (cairo_t *cr, int width, int height) { - cairo_font_options_t *font_options; - /* We draw in the default black, so paint white first. */ cairo_save (cr); cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); /* white */ @@ -52,14 +50,6 @@ draw (cairo_t *cr, int width, int height) CAIRO_FONT_WEIGHT_NORMAL); cairo_set_font_size (cr, TEXT_SIZE); - font_options = cairo_font_options_create (); - - cairo_font_options_set_hint_style (font_options, CAIRO_HINT_STYLE_NONE); - cairo_font_options_set_antialias (font_options, CAIRO_ANTIALIAS_GRAY); - - cairo_set_font_options (cr, font_options); - cairo_font_options_destroy (font_options); - cairo_set_source_rgb (cr, 0, 0, 0); /* black */ cairo_move_to (cr, 0, TEXT_SIZE); diff --git a/test/text-antialias-gray.c b/test/text-antialias-gray.c index 0c9f30dd7..8090d8e06 100644 --- a/test/text-antialias-gray.c +++ b/test/text-antialias-gray.c @@ -57,12 +57,9 @@ draw (cairo_t *cr, int width, int height) cairo_set_font_size (cr, TEXT_SIZE); font_options = cairo_font_options_create (); - - cairo_font_options_set_hint_style (font_options, CAIRO_HINT_STYLE_NONE); + cairo_get_font_options (cr, font_options); cairo_font_options_set_antialias (font_options, CAIRO_ANTIALIAS_GRAY); - cairo_set_font_options (cr, font_options); - cairo_font_options_destroy (font_options); cairo_set_source_rgb (cr, 0, 0, 0); /* black */ cairo_text_extents (cr, black, &extents); diff --git a/test/text-antialias-none.c b/test/text-antialias-none.c index 32f7a0ed4..f9c86a9a7 100644 --- a/test/text-antialias-none.c +++ b/test/text-antialias-none.c @@ -57,12 +57,9 @@ draw (cairo_t *cr, int width, int height) cairo_set_font_size (cr, TEXT_SIZE); font_options = cairo_font_options_create (); - - cairo_font_options_set_hint_style (font_options, CAIRO_HINT_STYLE_NONE); + cairo_get_font_options (cr, font_options); cairo_font_options_set_antialias (font_options, CAIRO_ANTIALIAS_NONE); - cairo_set_font_options (cr, font_options); - cairo_font_options_destroy (font_options); cairo_set_source_rgb (cr, 0, 0, 0); /* black */ cairo_text_extents (cr, black, &extents); diff --git a/test/text-antialias-subpixel.c b/test/text-antialias-subpixel.c index aba989087..af0112a8f 100644 --- a/test/text-antialias-subpixel.c +++ b/test/text-antialias-subpixel.c @@ -53,16 +53,12 @@ draw (cairo_t *cr, int width, int height) CAIRO_FONT_WEIGHT_NORMAL); cairo_set_font_size (cr, TEXT_SIZE); - /* Sub-pixel antialiasing with unhinted glyphs can be pretty ugly - * (bad color fringing). The reason we turn off hints here is to - * try to get repeatable glyph shapes on multiple systems, not for - * any aesthetic reason. */ font_options = cairo_font_options_create (); - - cairo_font_options_set_hint_style (font_options, CAIRO_HINT_STYLE_NONE); + cairo_get_font_options (cr, font_options); cairo_font_options_set_antialias (font_options, CAIRO_ANTIALIAS_SUBPIXEL); cairo_font_options_set_subpixel_order (font_options, CAIRO_SUBPIXEL_ORDER_RGB); cairo_set_font_options (cr, font_options); + cairo_font_options_destroy (font_options); cairo_set_source_rgb (cr, 0, 0, 0); /* black */ diff --git a/test/text-pattern.c b/test/text-pattern.c index 40a2a4545..02feb2289 100644 --- a/test/text-pattern.c +++ b/test/text-pattern.c @@ -40,17 +40,8 @@ cairo_test_t test = { static cairo_test_status_t draw (cairo_t *cr, int width, int height) { - cairo_font_options_t *font_options; cairo_pattern_t *pat; - font_options = cairo_font_options_create (); - - cairo_font_options_set_hint_style (font_options, CAIRO_HINT_STYLE_NONE); - cairo_font_options_set_antialias (font_options, CAIRO_ANTIALIAS_GRAY); - - cairo_set_font_options (cr, font_options); - cairo_font_options_destroy (font_options); - cairo_select_font_face (cr, "Bitstream Vera Sans", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL); diff --git a/test/text-rotate.c b/test/text-rotate.c index abc6baa5b..50d907b24 100644 --- a/test/text-rotate.c +++ b/test/text-rotate.c @@ -110,9 +110,8 @@ draw (cairo_t *cr, int width, int height) font_options = cairo_font_options_create (); - cairo_font_options_set_hint_style (font_options, CAIRO_HINT_STYLE_NONE); + cairo_get_font_options (cr, font_options); cairo_font_options_set_hint_metrics (font_options, CAIRO_HINT_METRICS_OFF); - cairo_font_options_set_antialias (font_options, CAIRO_ANTIALIAS_GRAY); cairo_set_font_options (cr, font_options); cairo_font_options_destroy (font_options); diff --git a/test/unbounded-operator.c b/test/unbounded-operator.c index 70dab83fe..d3a6f3542 100644 --- a/test/unbounded-operator.c +++ b/test/unbounded-operator.c @@ -145,21 +145,12 @@ static cairo_test_status_t draw (cairo_t *cr, int width, int height) { int i, j, x, y; - cairo_font_options_t *font_options; cairo_pattern_t *pattern; cairo_select_font_face (cr, "Bitstream Vera Sans", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL); - font_options = cairo_font_options_create (); - - cairo_font_options_set_hint_style (font_options, CAIRO_HINT_STYLE_NONE); - cairo_font_options_set_antialias (font_options, CAIRO_ANTIALIAS_GRAY); - - cairo_set_font_options (cr, font_options); - cairo_font_options_destroy (font_options); - for (j = 0; j < ARRAY_SIZE (draw_funcs); j++) { for (i = 0; i < ARRAY_SIZE (operators); i++) { x = i * (WIDTH + PAD) + PAD; From 556a4d8405a4f53e465425ccc1f6506e51b29344 Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Tue, 1 Aug 2006 15:16:10 -0400 Subject: [PATCH 07/15] Add vector_ignored_tests that is tests ignored for ps/pdf/svg that includes all tests depending on CAIRO_ANTIALIAS_NONE and CAIRO_ANTIALIAS_SUBPIXEL. This removes separate pdf_ignored_tests and svg_ignored_tests arrays that were out of synch and otherwise the same. --- test/cairo-test.c | 43 ++++++++++++++++++++++--------------------- 1 file changed, 22 insertions(+), 21 deletions(-) diff --git a/test/cairo-test.c b/test/cairo-test.c index 0bda5609c..df4283d94 100644 --- a/test/cairo-test.c +++ b/test/cairo-test.c @@ -65,6 +65,19 @@ typedef enum cairo_internal_surface_type { CAIRO_INTERNAL_SURFACE_TYPE_TEST_PAGINATED } cairo_internal_surface_type_t; +static const char *vector_ignored_tests[] = { + /* We can't match the results of tests that depend on + * CAIRO_ANTIALIAS_NONE/SUBPIXEL for vector backends + * (nor do we care). */ + "ft-text-antialias-none", + "rectangle-rounding-error", + "text-antialias-gray", + "text-antialias-none", + "text-antialias-subpixel", + "unantialiased-shapes", + NULL +}; + #ifdef _MSC_VER #define vsnprintf _vsnprintf #define access _access @@ -1156,6 +1169,11 @@ create_ps_surface (cairo_test_t *test, int height = test->height; ps_target_closure_t *ptc; cairo_surface_t *surface; + int i; + + for (i = 0; vector_ignored_tests[i] != NULL; i++) + if (strcmp (test->name, vector_ignored_tests[i]) == 0) + return NULL; /* Sanitize back to a real cairo_content_t value. */ if (content == CAIRO_TEST_CONTENT_COLOR_ALPHA_FLATTENED) @@ -1240,15 +1258,6 @@ cleanup_ps (void *closure) #if CAIRO_HAS_PDF_SURFACE && CAIRO_CAN_TEST_PDF_SURFACE #include "cairo-pdf.h" -static const char *pdf_ignored_tests[] = { - /* We can't match the results of tests that depend on - * CAIRO_ANTIALIAS_NONE, (nor do we care). */ - "ft-text-antialias-none", - "rectangle-rounding-error", - "unantialiased-shapes", - NULL -}; - cairo_user_data_key_t pdf_closure_key; typedef struct _pdf_target_closure @@ -1270,8 +1279,8 @@ create_pdf_surface (cairo_test_t *test, cairo_surface_t *surface; int i; - for (i = 0; pdf_ignored_tests[i] != NULL; i++) - if (strcmp (test->name, pdf_ignored_tests[i]) == 0) + for (i = 0; vector_ignored_tests[i] != NULL; i++) + if (strcmp (test->name, vector_ignored_tests[i]) == 0) return NULL; /* Sanitize back to a real cairo_content_t value. */ @@ -1359,14 +1368,6 @@ cleanup_pdf (void *closure) #if CAIRO_HAS_SVG_SURFACE && CAIRO_CAN_TEST_SVG_SURFACE #include "cairo-svg.h" -static const char *svg_ignored_tests[] = { - /* rectangle-rounding-error uses CAIRO_ANTIALIAS_NONE, - * which is not supported */ - "ft-text-antialias-none", - "rectangle-rounding-error", - NULL -}; - cairo_user_data_key_t svg_closure_key; typedef struct _svg_target_closure @@ -1387,8 +1388,8 @@ create_svg_surface (cairo_test_t *test, svg_target_closure_t *ptc; cairo_surface_t *surface; - for (i = 0; svg_ignored_tests[i] != NULL; i++) - if (strcmp (test->name, svg_ignored_tests[i]) == 0) + for (i = 0; vector_ignored_tests[i] != NULL; i++) + if (strcmp (test->name, vector_ignored_tests[i]) == 0) return NULL; *closure = ptc = xmalloc (sizeof (svg_target_closure_t)); From d85f30e789c74cc8f1d83ba609d8b02886686440 Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Tue, 1 Aug 2006 15:18:19 -0400 Subject: [PATCH 08/15] Make image_diff_flattened flatten the first image too. This is useful to use the ghostscript pngalpha driver for example. --- test/buffer-diff.c | 34 ++++++++++++++++++++++++++-------- 1 file changed, 26 insertions(+), 8 deletions(-) diff --git a/test/buffer-diff.c b/test/buffer-diff.c index ff4935e40..ed50cb6a9 100644 --- a/test/buffer-diff.c +++ b/test/buffer-diff.c @@ -226,8 +226,7 @@ image_diff (const char *filename_a, * (should use cairo_image_surface_create_from_png, should save * loaded buffers for re-use). * - * 2) Vlad has an outstanding patch against buffer-diff.c and I think - * this will be kinder to his merge pain. + * 2) There is a second reason no more. */ int image_diff_flattened (const char *filename_a, @@ -242,7 +241,8 @@ image_diff_flattened (const char *filename_a, unsigned int width_a, height_a, stride_a; unsigned int width_b, height_b, stride_b; unsigned char *buf_a, *buf_b, *buf_diff; - unsigned char *b_flat; + unsigned char *a_flat, *b_flat; + cairo_surface_t *buf_a_surface, *a_flat_surface; cairo_surface_t *buf_b_surface, *b_flat_surface; cairo_t *cr; read_png_status_t status; @@ -275,33 +275,50 @@ image_diff_flattened (const char *filename_a, return -1; } + buf_a_surface = cairo_image_surface_create_for_data (buf_a, + CAIRO_FORMAT_ARGB32, + width_a + ax, height_a + ay, + stride_a); buf_b_surface = cairo_image_surface_create_for_data (buf_b, CAIRO_FORMAT_ARGB32, - width_b + bx, height_b + bx, + width_b + bx, height_b + by, stride_b); buf_diff = xcalloc (stride_a * height_a, 1); - b_flat = xcalloc (stride_a * height_a, 1); + a_flat = xcalloc (stride_a * height_a, 1); + b_flat = xcalloc (stride_b * height_b, 1); + a_flat_surface = cairo_image_surface_create_for_data (a_flat, + CAIRO_FORMAT_ARGB32, + width_a, height_a, + stride_a); + cairo_surface_set_device_offset (a_flat_surface, -ax, -ay); b_flat_surface = cairo_image_surface_create_for_data (b_flat, CAIRO_FORMAT_ARGB32, width_b, height_b, stride_b); cairo_surface_set_device_offset (b_flat_surface, -bx, -by); - cr = cairo_create (b_flat_surface); + cr = cairo_create (a_flat_surface); + cairo_set_source_rgb (cr, 1, 1, 1); + cairo_paint (cr); + cairo_set_source_surface (cr, buf_a_surface, 0, 0); + cairo_paint (cr); + cairo_destroy (cr); + cairo_surface_destroy (a_flat_surface); + cairo_surface_destroy (buf_a_surface); + cr = cairo_create (b_flat_surface); cairo_set_source_rgb (cr, 1, 1, 1); cairo_paint (cr); cairo_set_source_surface (cr, buf_b_surface, 0, 0); cairo_paint (cr); - cairo_destroy (cr); cairo_surface_destroy (b_flat_surface); cairo_surface_destroy (buf_b_surface); - pixels_changed = buffer_diff (buf_a + (ay * stride_a) + ax * 4, + pixels_changed = buffer_diff (a_flat, b_flat, buf_diff, width_a, height_a, @@ -317,6 +334,7 @@ image_diff_flattened (const char *filename_a, free (buf_a); free (buf_b); + free (a_flat); free (b_flat); free (buf_diff); From 5a23fd70a0af5c2b0cb990b89ebc5ed7a01aae82 Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Tue, 1 Aug 2006 15:20:39 -0400 Subject: [PATCH 09/15] Change the way diff images highlight differences. Previously it was using the equation 128+diff/3, which results in lots of gray and de-emphasized difference. Now it's using MIN(255,diff*4) which more emphasizes the real difference. --- test/buffer-diff.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/test/buffer-diff.c b/test/buffer-diff.c index ed50cb6a9..0244ecd02 100644 --- a/test/buffer-diff.c +++ b/test/buffer-diff.c @@ -92,9 +92,12 @@ buffer_diff_core (unsigned char *_buf_a, for (channel = 0; channel < 4; channel++) { unsigned char value_a = (row_a[x] >> (channel*8)); unsigned char value_b = (row_b[x] >> (channel*8)); - double diff; + unsigned char diff; diff = value_a - value_b; - diff_pixel |= (unsigned char)(128 + diff / 3.0) << (channel*8); + diff *= 4; /* emphasize */ + if (diff > 255) + diff = 255; + diff_pixel |= diff << (channel*8); } pixels_changed++; From 3d95919fab2e47dea9e7b266849db7a4c05eb9a7 Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Tue, 1 Aug 2006 15:27:11 -0400 Subject: [PATCH 10/15] Switch from ghostscript's png16m driver to pngalpha for PS->PNG again. We have switched back and forth quite a few times. This time I'm switching because with pngalpha we get gray antialiased text and graphics while with png16m all we get is no antialiasing. This is definitely a bug in the png16m driver, but I won't wait until it gets fixed upstream. Previously Carl Worth switched to pngalpha and reverted it immediately in commit c4fc7b06b53c811ddc20def91aaccd756c28a924. I've now fixed image-diff to work with the output of pngalpha, so we can switch. It requires lots of reference image updates, but still doesn't help with reducing the number of PS-specific reference images we need. --- test/cairo-test.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/cairo-test.c b/test/cairo-test.c index df4283d94..7ebbfdc9a 100644 --- a/test/cairo-test.c +++ b/test/cairo-test.c @@ -1237,7 +1237,7 @@ ps_surface_write_to_png (cairo_surface_t *surface, const char *filename) } cairo_surface_finish (surface); - sprintf (command, "gs -q -r72 -g%dx%d -dSAFER -dBATCH -dNOPAUSE -sDEVICE=png16m -sOutputFile=%s %s", + sprintf (command, "gs -q -r72 -g%dx%d -dSAFER -dBATCH -dNOPAUSE -sDEVICE=pngalpha -sOutputFile=%s %s", ptc->width, ptc->height, filename, ptc->filename); if (system (command) == 0) return CAIRO_STATUS_SUCCESS; From 3e24f516a2f5435306ee8491e7955177b960a797 Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Tue, 1 Aug 2006 16:13:29 -0400 Subject: [PATCH 11/15] Change the text string "cd" to "AB" in test to match the other string that is drawn. The reason, one is draw using show_text, the other using text_path. The difference is more emphasized when rendering the same string. --- test/ft-text-vertical-layout-ref.png | Bin 834 -> 907 bytes test/ft-text-vertical-layout.c | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/test/ft-text-vertical-layout-ref.png b/test/ft-text-vertical-layout-ref.png index a7a0590858e56d31edfc33ed1bed257b64d8e8c5..f05f3c64c44daf832160c67ec465c17b6cfc46c2 100644 GIT binary patch delta 859 zcmV-h1El=I28#!fJ%0!R5d#M((smI500S*aL_t(oh3%FYE%?Dh>e)ZK`0K=qF}**e^8M& z(N?1_CVU-ke9z#}LGs$c4-VXW&bhoF=bifp%xH6y1ca@vQGatqqfss_EZp$pY7hvh zfbZXH%Eq&^Gn&n28jVJtoSbCE@&F*620ng-qHq|vyo6?&ot;HZO$|IA52mN5vx6l0 z`7>#;kj2HM(@8#fKz{n9T?HE&8aO^a&WVW$*45Qz#XyoiA8E6Zem~jQC&pf{HgK_6 zjIu2A^z@YH=YQuknM~Z+*ihnmi3AXh0*M4rPyiSVV!X5j{P>ak-x~^r(9+TZlgR{w z!GN~5HiSYUH6a)zA3jt!$dy^GFtCvov>2kSfv)Sl&yXkhjSyWU+yWP%IDn*h+ zbv5aBlMV;@?wv5FlYIP`tfU?dWu!{Ole_I8$)mVcIVZf;Hh0%Sn}d2paEjK|4) z_e3SXe90Z4&*x)zclQl{AP`_{YpV+Q;>FFyuU`wmp`qLXPEJm8cX#)Oe}8|U;c%EF zDP<`CTjl+0fWJxV=^;l)fwD5;xPKq0tp)n}0GBJbAHTS`z|72y0FflfvJ8*MgOZXG zHR?mEozVy!AFBto(Fjyl0=>P!)2F!wvsf%yZ$G_WkHNt~l$Vz)zPr2l lwz>nnt?mGCt2@Bk>JMPmmLuw$THgQw002ovPDHLkV1iY?n3n(m delta 786 zcmV+t1MU2a2f_xBJ%0xa6a^$V$rZZ*00QJmL_t(oh3%F!dObTWwNH7>mOSdl4EsKMu219C< znndeR^4vjhY)mg)keqbz2jB2L&pGh$e((1ON&5Ivdi+@G?thkgd!=X3q-s@;lFeq7 z$z+;zG8xI`lAv+q^Uj5xBmoz~jLY zlF1~cQi-0P9%{83;c)oEbi1WsQ2P4Sxr$w8XlO{w%gb6>S<%42K!exzfLmKzvTa-C za#_d6$MSl;%75i@b-$yp4=f8_y@JzIC>G)6ODL6`S>AX&&e+%(UauFo+f5`AAs&y{ zeIuQgA`$rcv+>7#9`4<1ZMa&kMko~G^z@X@&Q1Wz*489Rv_8gvGchrt>3`|zCVh5xR^#L2lG+?FnM^AG zhXc1zC@7IgNRkXm`n@l{eS>NhZr=ua=Nqc! zoSdAny1EL0VHnu9&EVi5!C>$rpaid9!-o&xcEjh-&V&OvJUk>8i!nJliDg;r?d=hb zMoFbo41W&~pMCW7sbt&DkA*jHTE9tlcXtJ7e}BKOO-)T{bab>n??|P0A{rb8v8g-|w%_T^e_2>qU~zGgrKKghy1JO3pT97>yCuJ0`hW35s#MzFgPWV1G7LkNO69BvZ{31l zzu^9T2n3w1+@ILl*}*hT48s7x_3j-+BJkx)`$Emk%wSm-l}d$lI?deN9JXx(P`~QF ze}@}4;9Pfv-w$d4%d!ZE!}Ry}*R`g*_-~`>F8 Date: Tue, 1 Aug 2006 18:21:27 -0400 Subject: [PATCH 12/15] New PS ref images, matching the recent png16m->pngalpha driver change --- test/caps-joins-ps-argb32-ref.png | Bin 995 -> 1463 bytes test/caps-sub-paths-ps-argb32-ref.png | Bin 170 -> 240 bytes test/clip-fill-rule-ps-argb32-ref.png | Bin 280 -> 322 bytes test/clip-nesting-ps-argb32-ref.png | Bin 488 -> 651 bytes test/clip-twice-ps-argb32-ref.png | Bin 460 -> 575 bytes test/dash-caps-joins-ps-argb32-ref.png | Bin 1247 -> 2189 bytes test/dash-offset-negative-ps-argb32-ref.png | Bin 170 -> 204 bytes test/dash-scale-ps-argb32-ref.png | Bin 2950 -> 6318 bytes test/dash-zero-length-ps-argb32-ref.png | Bin 272 -> 319 bytes test/degenerate-path-ps-argb32-ref.png | Bin 197 -> 264 bytes test/fill-and-stroke-ps-argb32-ref.png | Bin 243 -> 310 bytes test/fill-rule-ps-argb32-ref.png | Bin 1078 -> 2253 bytes .../font-matrix-translation-ps-argb32-ref.png | Bin 0 -> 785 bytes test/ft-text-antialias-none-ps-argb32-ref.png | Bin 335 -> 335 bytes .../ft-text-vertical-layout-ps-argb32-ref.png | Bin 298 -> 644 bytes test/glyph-cache-pressure-ps-argb32-ref.png | Bin 591 -> 1672 bytes test/leaky-polygon-ps-argb32-ref.png | Bin 233 -> 355 bytes test/line-width-ps-argb32-ref.png | Bin 201 -> 244 bytes test/line-width-scale-ps-argb32-ref.png | Bin 1599 -> 3903 bytes test/new-sub-path-ps-argb32-ref.png | Bin 316 -> 559 bytes test/path-data-ps-argb32-ref.png | Bin 322 -> 442 bytes test/select-font-face-ps-argb32-ref.png | Bin 481 -> 1443 bytes .../show-text-current-point-ps-argb32-ref.png | Bin 602 -> 1479 bytes test/transforms-ps-argb32-ref.png | Bin 287 -> 420 bytes 24 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 test/font-matrix-translation-ps-argb32-ref.png diff --git a/test/caps-joins-ps-argb32-ref.png b/test/caps-joins-ps-argb32-ref.png index d6742957a9915c29d64bbaeea7cbc8b2481bba87..c126d34c92d25bca532e0ab82e033253bc79367f 100644 GIT binary patch literal 1463 zcmZ{ke>~H99LK+sC7md1%5|EGhg`FXcH9Gp?3PTCkZ4JMtc+v}GcqFDav{fDOR|2f zQtPH&N8iyVKORU#50vq+)(;mp^J8;l_nqq=clWr*J-(06_w#tZo}b72^ZxwvKJUL5 zZ){{?1OR}s&u;Ji(EbiuhYVrRzdF)R2yL)PU%WS<)qRzsTbH0@W#aBo3IMEHt6O?6 zq-PeOa1#}GkQ#V0hMICTDH^~9`XlkAlN2iDSkm!CD$?0ur#)szS@IPG02pld@%B8B z${D{RJ@p!6nsbF(iRjM`OI&rr(>@FJz@T>d%PK_gvao*8xtx$x=plQLX!#T~vF7Py z`}otUXypn3TxrGAj7k}%vP?L^$}j+vi}V)5vrP>G4ZZ#mNHq%!(+Nk{!wKC5d_FqY z(aa!_iW}+JC5B4_oR4rLjLhMk?`_!<<6Osr>}}xz&SnhGqetJA)rH$PiTEFx(V-YW zvzx~yg6#+Ugl#h*STcx@A11C&x|ZV*nL=_?NqKmKU zMT$&b1d$&CHZ+86NO*E&v0}0B^u07G=OgW9sn#WKezsm666Ez`guA6l$JB+M(F5_n zYMpi?Q{%Mlf&-$2i5b@u?fY=T4Epf=UAt?fnepVtx%7k`gP9gvO+ld+bybgY|KnV_ zD#)*=S3bO>g{2lX+*!*Eezb8yM91XcAJ27RR}ewP<5KgfAtpjWN|u{wh(vZ~$;`AY zV^|2X)xi%_V;i|=o~Tul1!YSQOP$fDiW~~-mSx|>FEA9Nxs!d?Lw}a&3F?+fn(^}t z#dz+>Dj4DK)aY5C=A7R)vc4_4MHM;G&Gk$kxS)f{&rq!cA{W9NZ3 zUo!fgrJF@mnVSTH@V}r90>To2;r6`(5zL<`x30zWVdc?uVgTo~;(RtuQSt z7xe$l#0hXzX zH{UU*m?&TyqH1&%w{3=G1gR?w`({c01j$mETXfCpB}s$ii7sF4)RJUE@)wv}RE^1! zOm$G(9vb9{hXnZb9v;N~7bcnpxujE#FnXJ1G@wWGaS)hOE><-ad^u)KzYaBN-Nb{s zWFk^X5Aw#kb*;g5y+K8;c~*+X*63aZ=R$WviH}oP@GMW?u+^7Y1hVOH)P${tQrnET z4*=yH&5&$ox{&l1Cw5wI#eotqy1I!K7xzNK$}VTPeNJZY4&jwm5$;(ooFdSb-rn!} z{Bjygh7+gj#W{0nbMvTUJx)hMOZ~Kgi#AMi14sSl#5Ps|D0fW9=(!K5BDbLDatv*r zScehGa_g%Y@$%HDcAYn~V*`0)+RsI0=@J7oWf=;MRTb}RjaWAMJZFFf_CLsVBxADr zVG?p;(#a9I6L^=*)@I$tT*TuSFg{qi`$edkwjk&309m>YEtIplsUH;ZbsM$4Y z8#G->R=1tauP5?Vs_Ta~qSoF{{?7Kb@VCpNef;ll_l!Pl_w5XI3D_e}Km6FTB%U~F zQq)*GGtzuAsk80;{@(+zeC#GW(diG{tIkbLrjDtKD8YM6UNl}^ctzz+SBPu!5uH-}j2h{sZ&Txg7ui delta 929 zcmdna{g{1%BnJ}%1A{Wd-bWLSt?Lc>>d&lUU|`Pjba4!+nDch-&Ai(V0xZ)V|NWmn zll?H0a$NPhqdZxXNU(Y=I+l~5Ni$B@; z{Iy;qvZ#9bi*324>%UIgt$BUU=A13(3oqMDw~zVB*WKJNqjyWH)Og98Z{D5PPwXgO z|NeoHWVZFxzcYS)?LYkaOiInXjLu`86IS@%e4P399ebPmEY5550{u(=e_d9z(jK&Z%#5+ov$`u1f8h{RRQ~Pk1`tsJ%S!Br0szL~oB2b5HHC|9>xmoC{Rm@=%uf zqMIB@_17Eso&@DQkpv0{b^ff4-02pl2oyG5Q!!=1RS#a3O|zd&b@kuhBDJ!`rEIdz z=68*2y_COBIFUDrecC(22^mW`fjWzhzsfbN|0tc=3RDyGXv1V}kZXZzjO}LgE1O?p z2fF3wp|{a{4x3%#1+pz4{XF{FP+GDPsJy1&_oJWk-)h&N-}xZg=Ge?h8X^~ke*UlQ zZ3i<9Xs0{>@|=%(N0@|sZAx5HxwCy1RX1rx zMdVQ*~sQMJwj4O_EYeav%VsB8+d@tb;2Fn5{ f`2j2E2m7Ag^PA5^@Xgo-%!~}4u6{1-oD!M{8@7Lf5O>qgeDll283;EFrP`;L)hKQOl79J zTf1ET2CyVcGT>bvtHX$RtiG!Km%rEH5gy?Y{vrf4G2h>&stg!#Re6`+-)8*esa(ye WkiPlUu2%p6002ovPDHK)LSTY%(n=Tr delta 97 zcmeysxQcOtBnJ}%0|V3RuBeH|)_#V3^=H-q`G%e@jv*Gk$$$R;w`bnj(3vxrhlfW; zpljkpK|Pj2ZbK!Jn>MQ|Lq4xa%gRoZ*)WNPA&8w{S^W4TMxbT}Pgg&ebxsLQ02>+~ AzyJUM diff --git a/test/clip-fill-rule-ps-argb32-ref.png b/test/clip-fill-rule-ps-argb32-ref.png index 6d97e04defa270947f87e5645eafd1784da80cba..f06a1a2c515b1fc496161a4e73288b9be81e44e9 100644 GIT binary patch delta 250 zcmVT2285#xv006do4vhc+00v@9M??Vs0RI60puMM)ks&*OGM9Fp761SM zw@E}nR7i>4l}ir8APhunEB8P0xGN+|DE>wXnO&seF<|TvfX@zMtC5(6n5A-a57Qj< zZoMmLU!JP+dztUL(I-d^Ix9=I{1N6hH%b7?8l*`8(wG9!PY}zEj*BvCtZF9r9~HpW zcVw^TrSV@Mc?R0XBlDkCzxR!vQ!@!bkrQj4Ec2GGkBq0|x;SfjpV&5YbQ;uiTB|q9 zG?m^voUdT2rJr?RcIHNy%b=^p(XdhGY2ZIqU)l$O37v%)C;$Ke07*qoM6N<$f-CiI AW&i*H delta 208 zcmV;>05AW-0+<4j83+OZ0021|nc9&vJAW|_f6S}^005s!L_t(YiOp794uBvGW5oMk zxqcW4F78Rl*q4u$b`=^4K&z{6yeDcz`QQ-bl?T##oaaf?>9P91y!(a6aa?!4@NvL-UdNr^^Um&mzt{ENd)>N_$K&2N zozV7=tfIWO9i+V`0n(L!{3ZbcMfphv1d0M;AWaZt`by+LU^a>*2+T#11(}*O$i$UM zgTVd2`*ny;H36i`LOAyFKu?2xl6l;*g>_O62 zVh;jYC=no#gAxOh(l(G4&-Es(ByJ(@C|f~RJ^k*CvV9@Sf0D3&qwOHjd-9wF$f_Js zWI%dPzLEif-V+c5f!-52kX5;$NPWpMTrG*EgHmeCD9<@hY}A0 zUMM3#oEih-vXU_%;DIs<1oR)`9tWb{ND$?fj06E)l(8V7i82~QvGE{kD;W<0S||ni zP6eePVin{mg_RWKPrFf$^E`LHe*04wB341fDu`GG5vw2}ViiQJf{0ZRu?iyAC+?oA Uz5m|g*#H0l07*qoM6N<$f+jfqh5!Hn delta 418 zcmeBXeZf3Il7oqXf#H7x6Z1r4>v}`J`ZH@77#Q*oJmJO8bHf#ybsq{bsmovcFKDq--ouE#!6p%vE$YTH({uUFdPCF@Jq_AjVcn#UcEX(`!Uq;y*q#=7d+oM=`qxB u{imT#Q&+NU8?2K9oBg$IFE)dJv9e`rA1&e6zhnfA4F*qFKbLh*2~7aD6}=h& diff --git a/test/clip-twice-ps-argb32-ref.png b/test/clip-twice-ps-argb32-ref.png index 9ec76b4efdfe36e2beaef2f32806ad5ba8d5dd0d..0cb6186221dc2610ed89025bddbe41a523fd83fc 100644 GIT binary patch delta 505 zcmX@Zyq{%)q!b$i1H-D!!h1l9Ey>&6h2cL4F4((#@s*=C^2IWV=?^%f&u^1ced>RD8J}D7?~gWD{hgec)X&Gyxv*sEmTON= ztjb}|QDxZ1xJ`)RHbXRLLvF)bmIG!7!k7}I6S%n+Tq|5x`e#+CjL62rLe|QA)@pT} zy}*2Vaz{**b*){etV{iqSeJX-=5H<2vg6zTlrQ0U$6eNs;g9T}@*d=ESQMfzxKro- ze6@X3#W}US|Jn5o2Z zZRAioEqZYqm%|aQ3sqKsrY?|jSfaI|;v^T)8`_L3n3?CWuGs|S2C%Y9{SA%se>aL%V@f@yOf4kmiY=F6T~XR|U@BKc)Y~6X&1<`_Jeol&RLKe`90X sdCr0H5Bt+n%%Ig~+`zk`w1Oc#dcn<2zTU??fw9Zr>FVdQ&MBb@00z$3{r~^~ delta 389 zcmV;00eb$w1k3}F83+OZ001Qm=82IrJAW|_f6S}^00C1;L_t(&f$f>mvcez?M6Khu z>Nn}n;)7c2jD^i6BxT4x-3PkaL*N$dQc5|EtaEe#tr8$w2@tIWh*knbD*>W)F>zUz z$Lo($uC{~QZpy>lnr5rLWTL@n01d$3K&!UN@R8yS96&t~Ck}(z#68l}wqk%z>3?Z+ z89>+cT#4b|1AvNQK{qrCfTXWS|8;9)fDC3!2v08^To(k;oPHuu^AT{x z8gzi3PLn=p0hA&13=n|Hu~90IO>D9TlqM*Ea})4#!@r3I0B%hX6`H97$J9&!4wnI< z&@>%zn|^6IRR_S^Nmmn_<8%)>9df6Y^QZ5j!6v3dn5;mX<1`Va`H1(OSj1p5_iw9N zepdOE_xN{|r_p^mTnVHl#2x6$K$tU2s1pNcJL@N=@AE@{WUJwnV^k2idAd&?R)dyzPIoD$M<;O@86#uuY&Yq-jg^7`*4jY-YJi^$nrSU*g2nN@#qUfH*W& zepCaWX7sY3J56LY)rS7W6KvO}g<5Ry^X2wCsckfh2%MqRr@)9de8k?Z60G_yn^yIc zI0cU-oyUV!R!=w2X138v>ADn=_I{nI^m5^7SqMS-e1+jZ;|_${$M2 zVw7TU!`5yNS58)D~sCjG`Wwtb;?p z#G~)%xvXe~47%>*5)w1~t`;@hWXs+S6|5FicT5G+8x?$``sYprddZ+!c*6Gzew*!W z-z6mW+uNKg35oshes~mceFU0yk>W({W2d{jkMUvv|L$obH79`RjNb3W7fLMkFRy+f zQ0LRypU`i;?D_QbzrG(PY{T8%rJHBtcjyz&p5@api% zvUqu+orhiDlt#i@9z$^}cP);Hf;S^u57e=kV z`ZdfK*60=hQ#M?wk5!k(@<1H#HQ0*^C|eljZ{TfT=HM>N%f`<^(p-G{!WEO^a=z9} zGD5W`7CM`3XPW?M087IM+R7$=R-vvKro@0z=lGZ)NX6@mtNL8iEPOULFs&=i%w%svES%BSZ`~=_cmw;=K)|rhNAV25`$D+p;0t1Mb%DHrdOS=72E`XBV^6$CCrZ0-Gkzu(w0W3c$#HX5aO`lcYKB^tVvcFr+ThGp#vW+Z@MpF!+8rs(2&Vp^YnJ!F+NtezAgqYlZ#`fy zRD>kIgeZH~4Ux%VE@C~FfnE=s&t4n0_xzkB-XDDjzbxLf2p9Tjjjq68$`adIc24+o zIRZS!QvV_Qs5xLI8W*M5xn8axF-t7ldM*iw$US-2yV>Cu>*a&xj|(^Eb5d)D#`8y? zdArVA1I`Z6p|Pjd`c?}{vx&ri_lIGK=x-37pUvIpq$L=|2NV;LHYExjFU z1JyVOCHQ3=Znz*8aoyyXP5sx@f{C5EnFTgSvKL&wk9cT_-jDPgisCp-=F`C>?K*CF z=#}}qhq^1~tZ+v>Qv^xamCSw!RqqlK(8v))HEj)MQhRvH(SdkNIBMKI=mTZ9y3&*Jy(xOY2iMVhCal68{Dgn#~%Ch%TZUz z3;eMK+7Yng(Gq-fwsk`UEE-X4axirX;URmP8H9jY=?yG3?d>%hsjBZe%9-1x9}Hri z)_FKutwzDI4=B*trtLlK*W5tfmRxm}$b0!$cH~jAlbQ1(IW}>cxLy=cdq~rXF=auy zekhUyO#pDtM)w472qvqLzbY&h-N0uobiB!Kue&Ky*Xmki!}rA`&E?45}J&Y4OEg`E?%dVQZ58v<|^ z2loV8Fwk3xNW7vXDC7SS{9ltV|Aq4ZD7`8E=J~>JhN&Fv@#6qO+B(_LtZpU$8@dP$ AfB*mh delta 1183 zcmV;Q1YrA(5#I@r83+OZ001KZz2cEGJAW|_f6S}^00d@9L_t(|ob8;^lG`8*MeR=i z|Cil|%z9kM27v_JtG(x`%_JDXSpv3{{Wy+I2p;~d?tl<&NLfLKloe!1SwV)B6=X6G6M+8e0~QD~}FrtVD9ecvsgZR*dhLC+sXQ(Q5tEcM^E>c zo{mBDj5GBdU2!S9{}9!i`4l=|jmsYR_dB}>P1bfQdoxv~4J;(EwoTc`Wi_#{2`2a( z_MigxvI({azYXfi(oL@42=y1Elz%NjJ+*JJ2PI|uvCsYYJG;Gc3dip2CS{#i40wA_ zhdtrKF&;up4@D9a{vd5R_J~MtQ!aa8OGmO>d$(|mPjnH`#-PsQwgCK( z7Wu|)VQHzZI+zhv@jRnOV7Ri^QNSFLM>WqE%YDX-s6b%i#45(_U>@UV*?%*AuuS2g zh&(Bg#s=RQacd&#asyY{z@$5HMntrByNNtUqm)hdeOe_pqCwluz&!ee3{lpT_{RkmHvz&ZtZKxAxV8j;AQ915ZT8&k{v+W5~w9^W=R#mV*vX zZ=>K{YeyZw$|Hhffc>C@(|_kENUa@slPfTT2?XArzrh&M*r#8Cd7>b&_x~GXL^y%B zWpZ_FqL1S^KZO&vhigPRs73@eaWm3lJ^@38?ZlHzg9%YYlade7!uC^6reVY$(b~K` zrFi#4E$Ab+9m1Qh=RcN=fRr6bcq-NePHW4)p8uU65wx<#5yAA}?SBacW^b>&^$;W? z+(Meq0Fj=}*)#vY!HEb|S^QcC4|EYh)iNL|o2)kQk?#AT^Y<0T!JjrqaLTHd;REAM zv^jHxbsDI~j9imsZ#Lu-eV6XL+~iEfGC-@WY8haG%K1W3R<#V^;6#L?tmjt*2VHmO zZw$&>J1EL->uMRs9e;G7&IutPSc`T1+KO?ab=An^O1KHEJ&ggavL95-fX~{9;FR4| z%fP_GS_VXAxBo-UG2blpn|7*w9`#dYjDy9?+b)oI7VHs4<$OumZJV3eI=a?;eifHx z^aAVuq%7jf=b7Log@@%@hS2*&Bf?Q{Wezr&la%?a;iu%*w`|jsuSoo~9_Q9hyBuuPntBiZV@;$gQk=O@n{+{s<=)YnxYDG)owZr$vFPwLKeyOhR~S&br6J(^RIxf1_+| z=Uz6`zy1%RHk7sQ_B7LJ)gJ`0}ZEY{R;`e^f#2WS|Br>mdKI;Vst0FiGly#N3J delta 97 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 literal 2950 zcmeI!S5y;N8UWzn&_YouDv?MHBvdKViAae+fRF@ck*Xkq4xt2CS{z^`l!Outp%>XO z3?N96?zo5%2q21vjxbayhTaB{fd!}R&c5x-KFz~D_dowR_nv$HbHDpv5*lSL$aj$s z000PDT9{#v=OzGv1IBymIP$z!;e9*-11uba004gBlfl6nk32X|N(Lit1l#$01&6u^ z-T@%&&{F1i{eyyoZU^2A2$s@S*HTqeKONOmalA&*(#+UCEN?mgL&FSAz-+x@@95@R z!zP2*X>B*I0n-b2oI?XWK>nV7+D!JgqKVgybP)HEGN#-4t1U zq89`yu;}s-<~|#Upqo)U&yj?!&pSYnh6*lwL!SXd*yb&^T0 zrV8w>xf)$<-dc7FAJUWD%PECq_dD^%D1ql%m-q^kJ(37>=z-pt2XcE z=kOGL9D#Neo4h#R`G9z)w0l$Vhh)Y(A6OiBeVLISMbmm zwhth;-GJ^WH#?pC>zFcJ@sn~3BrI5~j7#`6XkRe+1&{6rB4@OsaoXmH5}3NdV^-!IV=KXg z@X{&hnor9;{q=S#vKCe|Z|auA-zU}mcYh#UdyXSWtD4LRI&Jt67i%fn@Jq6jku3P+EEwjKuJQh-B{Xv~Y5YQQu_N;;)c%taf zGnW0z>huVV;UMF1!i_%O%1E@bn!($SGMqQ)7OIF>|k4-L|vP zAS_1$1Kq~R1qHzc_hb*6^Tv(n=2wCK+mJPPRfrcRhvtV^f{6C1t(mx79qkVf%}iZpp`7=$d2O*6aYR;Y;)W}5nAHXJwx39CD@)oCr@np_lL#Ba zda2^)hAY*Aq3OrlU&f%`?3F7=5usD#mdqsT$BW7_K1Pm>1#RPXz^biqSq!qPZ@+R9 zz9f%1T-&z_meNu-F#y$0<~S-xSoV=Lkb;cND~`|7B=Fb-MgWKKx_g&f+5=)`Q_J^V z;$eB~zO?n^lu)mnCS_1D&c!jmwF9J#%rKevoM<0#d_JP~*5ag|FdV3Owq_nLX3ZY9wNhO9e2g)X&t{FXpW5Ob!pWT$R!~-^2}NNsoZ{;A z(x)ETXG=85YC`g4bGbFKUNlw@b6rSY2C=?i8#Jc(3B}8 zO=bw!3ytr$FQ|li*b^SF;-tSiYMlTbef+T~Z1r_OtXxqc@0hr0vZM5%u-yHl%Gk93 zfc%A|sQaI_9)l)yi`Iu2y&enXu_DPF+_0gg=qE?C1WW~E^#_X*;EpOqywG2tg5OcA z64OpB{|~5_W-`7>UyZuuq93C_-AS;kF2Co^GNISc~L5FKR&b-^&+&Wk05 z+NW`FRZea~D_t!Q>y~BJTb^t}wU;Qbx5K{lHvli6eL5r(sR6}|gFfSo%|%PNvS5y6=dCG&6l%LfoG#C!#%=Dug#RV{|112DH)8ipCN2Nc;m8f<@gEvs Mi9nfEn%sKuFOB(CWdHyG diff --git a/test/dash-zero-length-ps-argb32-ref.png b/test/dash-zero-length-ps-argb32-ref.png index 897f25f5e32454c1157cb3291d3425017b0ed44f..6c334e102484a94cc1c69801c82f3c29a359f51b 100644 GIT binary patch delta 247 zcmV1)~85#xv002++Qi=co00v@9M??Vs0RI60puMM)ks&*OGM9Fp761SM zv`IukR9J=WmQf0XFbqT|!6SM96L_X%zpSgRTeV>sS_6V4Wz1tnsF)d|Y61XJ^;RJ_ z6K&sTD~ZGm-HcaE99RIr&F0-e^;SQAv+&R+@?Kox#Y+F* xlOC^|BVFCUF9j-_5s`YrfiE!6VLzv002ovPDHLkV1goyZ`1$) delta 200 zcmV;(05|`?0+0fb83+OZ006+0#oduJJAW|_f6S}^005UsL_t(YiS1U)3cw%?Yi0lc z%iUp4iuG9!Q80MWNNo&3WDy}39wH*<={k|%Yxwtc3HJ9yRC2tczUpUnn_26*lmsm) zAv@9R!qjRd*3u%6Q5$kq%yG1teUf0$Ds9~)^k9;pB{fN;w_m+Av&QW3CKO{(AvIx1 zIIA*?=-3jUgmD0WHA(HvKltBsrAq)f4{J`JtSM;&%USv@b_8?e=4&+jLh>}KB6(>V)1Ap9QP{<@? z7SgJ+kjcv&06n{8t>_@Fmb>dcKU ugC}xb29G0(I*QtxDC$)kqNrC1gR8ufDg|AQ-b1zk0000uH483+OZ002GgN#~I>J83Zvf6S}^002x$L_t(YiDUf#|3AY(0Hy)4 zbs#NfLE$knBG@#J0wf*l?>4t$#2 zouSL!5$H_0J8gji=nBe>EN^$=N!tqq8K}IG7m)1&Ke1kco3j<9Kv5zpW6GEkQGrrh z*6Oqum@2FgcC3XKntlOEoIy&&!=^;6+xZtjft0bsri?v~?#^XwCg=t(05|MV(7Y|c o|9zUiSPT#TH^8%_Z5lni?<@yeUD8eC^#A|>07*qoM6N<$f@#2Hr;_4JAW|_f6S}^004SPL_t(Ijm=bB4uBvGYYq3m za{a)JszZfnB411Q>b3?-!rQL^0C^v{?|sg2|1!#g%sDt%8j5@mLU)epibQhbJH|BV z2#jWK*MQ;ipS+o(=|UX*4b$|b4*q~?D4bAJlG!z&>GVR6hq@uGp0uZ~pOunqjuOYHyv diff --git a/test/fill-rule-ps-argb32-ref.png b/test/fill-rule-ps-argb32-ref.png index b5487e683db25afe3310936e46546c8d04205120..971b5601ae00be77cc6b881088dd3447e3646d06 100644 GIT binary patch delta 2196 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 VNJ-?~x;6j+002ovPDHLkV1gjLX9oZP diff --git a/test/glyph-cache-pressure-ps-argb32-ref.png b/test/glyph-cache-pressure-ps-argb32-ref.png index cc02ff68ccf8d068ba05d7f1cbf0d17820a36bdb..e51bca7ae2fa5116fd9d231477a6d8339c2988f6 100644 GIT binary patch delta 1611 zcmV-R2DJIl1c(ig85#xv005Rps!ad@00v@9M??Vs0RI60puMM)ks&*OGM9Fp761SR z{YgYYRA_|8Tz>}+Tlk&1J&Ipx%U=LcRTY4b z0x61OQMJ=FANSHW5+VwgiBzwdB30zVGSZE+{FbsIF_O>zafR z_`F^06( zP+iyIxl$^~veuFiBG_t-A!7^?5#@PKQp&}9tn>HN3#kFl)5<*a2*TMH~+pgLX`)7_k&lmQ` z{sTb97`okVAs0CIpNZ)jmp%U<@tfPCwGR2h^5$|l9`hK?WyJ9%qF@UV5n^F;09Y70 zC(6N@!&&@aLqM*xrPg-kAl7z-_q`Iz2DYeRB?h7g9!Y1ayiM+*ojVs$vMB)8d_8J~7zIZ~M zKhN`=wAPF9TQQAsWYcH(%?l^ampPc%e4&VCuzt3GH!j9-=G%f0V)Z^R&Af%-dt2l8 zptVNRG|*b3sw!x$pVl$ouO~^e*jg&37Vion!gC=6@;pbHric6fJ)cM^H~FkVDTStK zFbo5vln_F|IT!xlLRD2L%MyLx2R=nnz&RIm&bLo7?=`MUsl~NY3O|1Q2-kU@@7nTN z9OX!V%zG=QYwzvZ^a$4SB}SHIFvh?bvpL2X6Z#$V+y-V1muDb^fcO4qLY zWm&>|A7po32j?8xwhi~r=kqStILTwKx7!VW)><@8gR(3!P17c)M{NFC?8!c|Y3tq^ zw$8W=Yi-Dxtpe0qhjT8+hY>zCNGb1#?}5k1htMO!Ye5> zubM&#SZk4{X;^J|%ix?tRaNNw9>B+cjDNXYAf?<4^cI*eJNw8NTtHlCLI?;UHn&S0 zvF_9m`#+Uje0m)ZKyn zE7AA;qFHnV?w)R;ZQDb?#~t4z|33oEx{8m)pZUZMm1p?1ZTpZG%6oiB#g zIux2x>W?kFIp$4-S0m5!pZdin33qD06ULa;;(xDvZ@lqM_y-~J)T1{FrThQ@002ov JPDHLkV1gQZAn^bI delta 521 zcmV+k0`~og4bKFS83+OZ000>!JsOcSJAW|_f6S}^00GuXL_t(&f$dmHj>I4g#8LkL zW#$kyLN0GCNyvyg(FB*vEXEDxoYTg}k~rQLu(6?H@6L^NA@5Ei>SiRO%Y1}n+k}*D4pm3`ZB0D5;!!rvH-Fpad&?D8-z_u%K(hV}jMu zc1SY*6(MQe$r$_KvS|a1fQ@yvBY&C*x3IzGxk&?diqq)Mf46r$3{9M8#FLi2B9I^!q4OiG+gJ{YfrM>ifXC!B1VKknSJ23rJJb>{lu?g;#g2{{y`e&;$ zmN;EDG3nYxQq!$HrFt&Fa3bWQhWI>>grMDNHnZ!|SXm>3%74v2cj9lthmzkEsZAu$ z6c{LJ>6`s-l$W+wih(|SNNN-0SFNukjQjARtodJ|K6vki*;p2T$z7`n60AC|00000 LNkvXXu0mjf{nzTltC4QFboB=IKVJC43I$z?Nkxv~$jz_T?ub z?5yjGS~Rp1LZA==RpI!;JkM2r`XyCWIOpn0f!N#9A2(?`n3;%(mSw5a(<9?JzMhCn zDF9e&p{jMIstRjuT`2%|c<&#JPeG-0T}RAJ(=?R_mD2Y;y!TnP*-}-7h-6JfwiJkq zAtJXE@kk29`(TXuTXP#!iZOSfJaB1MZ&8quvEDY|^5Ab2+%e;+}X|K9_#DljQs4Gu;7 P00000NkvXXu0mjfy|F_0 diff --git a/test/line-width-ps-argb32-ref.png b/test/line-width-ps-argb32-ref.png index ef6abb74e2dcfb88979c03ee50fb2f4909648bb4..4c64e6c63988fed8f99168d02db6eba55b9bcf5d 100644 GIT binary patch delta 172 zcmX@f_=RzTq!b$i1H+T1w?}~#TavfC3&Vd9T(Ecfq22Qtyc$p1D|L-usCq{Z&t$F)>X^+X575#s>2YpD_7#y z+GOpNwS9dV+8%$a@>2u_z2s$U=k79l{m!dY^iglb`N(JTf9-kxuAF_+AaO=y_%p`4 YHOX_|%+T5ew3NY<-PO-!ol`;+0Hlpbxc~qF delta 128 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 delta 1537 zcmaKsdpMH|9LM*P*?HY2?~GhW7elm(E^=uuZ7Izxku;@Ti$%&oZH>1SwNZK`%cTuV z2f0M+oJ28)BC}4pB$qB$VML+gIQ?~=^T+w``_J!rzR&mfc|Hxs4eC67loA4gfZub8 znRbpWf+p+9Z3IH4h2p-Io{%@j@4M8uPTl=-(c)tJcnYwA>_GIGB;MqIrbGA7c%BoC zJ)U&tjwGN$7mnMy-Zq1$$v7t(nF~qHe@4~|#_(M7{>6bQOPwu)aff$S^w=QW#D%C) z6M;*M!FLxUYryvs9FBW*1{|fMvROFgB6dKSz&&tKc}>B#!ecWVabZJX=|@sxF~&RF zn9TRyilqjTJM&1XMP4u=I1x*XZiB`Ed$L?aeYwA+XBwGDwb024=Sh79yqbq&>yb5< zSCsufAn_B%`f{)|tAP?AnpQh^?jdoqM5jgK!`|Vi%V& zRG^1{*SXdj=o2#!%cxI=s@MVG=MT_h6K~fNQYj@1@L9SRQPA@dDeUu-CXEwe>SWg- z`m;Dzg`)Z|rLvg2*NC}Xr{HKTCnI+YS}Bqz4WXq`qeN8Iyz!=<8j&PB*Dd5zruPKAX-sR|WwOt*-`xc5( z>Zn_aJGBj$OWF0{+9OOGyO!mZdkY<$499ICEqp&43H#hco>+}lrDOm3|FlIa|BMeE zd1#D;Y4o^G+LXqrRclrelHwIseDJW@vNjv2V!ajJy!_D%xM~5JPnu+THZ+NfLXI?k zV*db}&CuXQq2wiJjR?R&&N(xBf2ySwDReh2AbBLp6d+JcI=yi?VW;E_oP0lH9Pse% zZ#o8OpTZoaC?2T#FAD!Bem?nQ)!oHZ-8>;TnU%bZm2Is%Vj}2ssk#AQ2`RMp8>U-O zHXh<?oC1~}WJB+GSH<__@ZfO7NZJQB~NgqW>; zz)gA|jT0D2BKwphc?%^$XSpCO2n;FNFqqo($4=|wsD48YTH*zWbCTIQB_{60a2#i! z%2*n-mu9Ga{$8F&YVu4{;tufUJLN%Z4F>I$XZ#Ymdb^I9`&p&t3aRPG;wqTjymUhe zFa=DkAq1feD$?7;TGWL3%gr`^mLarX#s@rBc<2jUI)Iik> zelwd6dXaenVpVZX1MYi!($FkMvkG8&U*F*8fL$9Dh%G--^iE;5#O?O%c1B|)AM83y zAy6k{pyKk{vV24AOzTQxwK~~^X_81>%H(txd<9)ztf-&w0arynAjUSlO)}gzQ0$W5 zaqiu|29@3D{B%O`x91Gm=~w0w&0e+XyS=BAjYdLhcYuWJc->Tc_4+T1aV&m!iCwji zuT~!Qa-|wSQ#W(ZQ9oGR`b|4^GO!CqZORNtu1gE$MJooI1;P%z?7dcgO=r$8uvOI2 z&U*ycl;h9Res`L0X^Zcwb3o8qy(Th5zNL6z8PXu z`^_!dk(KexpoG}7{Za;NV*zNAx*)#P)^9Q=<+tx!rW+oQor+F0AKCfHNRUwjl|s_) zf_1m(gs|AzThWXq7cI%I`zAUL>8YL5F-5x_RDV)?M^`a3MinQ|ux;vvhdDHyhpMfO zbm1c(#P7IG)!|jC)rGa4swUYF&sQkoar_yPilcNAf9P?vMa!?snk1i?FHk0+&w73B zn{U!);&${wUUA2@u`|?J-VGHhG+-uqji6ajoY|1`gTO1V05ld8qi1r>+#8L#fUiV~ en5O>~@gidNFgvSb3g5dVdj!S9+r69=%=sGwhr&1j diff --git a/test/new-sub-path-ps-argb32-ref.png b/test/new-sub-path-ps-argb32-ref.png index 23b7e7598d0efa30aeb734a6fdffd07b2e2285a5..76c50fb3e69294b5af997ea7eea00ac84822332f 100644 GIT binary patch delta 489 zcmdnPw4P;xq!b$i1H*3TnHzx=TavfC3&Vd9T(EcfeFfQ?QaSX|5 zd^`PO?jZvKhxz`o3fdc-BpBTiSS1!pD#|jtEl@tdk=Rn!vgu%~{i6^KuVD6eCu#ea zEh*N^FJFEtGiTML9dbL%8SCe&7)-)Mo?Ie@Gdr|hV^klVaesP!lj6>p6ZV3F_2~?& zo~>K+Gf|+>vVdWqa4FlgRb^bK%)=7*cXrI~+;LO%eCmODQTHToFciy6@1Mr_`+;A` zRe9z!2Xvmi(PheEEX#Pcqr>(_j>EjQ_3xN)8-1$9rwWZlCK z+-|sewIp|8*7I-6;d`Sv6dn zYScs43KTM|f4gv9mV1KUqiYAeu9kgYQTQc1;%bZs&x!CacRN;X3*MTVuxs)Ev(@KJ zs*lezj<@;3vxo8hzwO0ozqW2F-8S8`mc7bR^egMd7zy9<=T|-%WmSG&*S+lQ5|%?h z?peebN9<%{N3>nqN^Zs6INY_!!orDW0p4@_jon4Mzopr0FXW0GXMYp delta 244 zcmVL^fXP+*rQ|%F@z`3xJ4WC2Z0JzJ?374i{`4F4#Jj6TC|k7zaQ;)6zq64g(a5 z{s9!R7Pjgmjd(G(s#!A96gfVbaaH=-IX)i&a23QHW~_MiJDPHsXU1%Ey092X-eD!G zIAVRXWE_rkGv3tvgP3x7h8DH9v1Ty>OPtcZ&?h(=oBoZ{F`p5Ag2U~c>pImz@153I uYpJ-G9&<`%q-WrQt-}RdhYPljk?;%+L0000>?+Q{3L!>#yg4dWC+a6 zV2q!u1$=^w*5Wy$LkOZZO05-AO56UF64YA9RdWXb5Umjq@vsjf4)szIT}nCaRZ0=} zQ#sSivP`LY5!N@m|512bKGM#h&ZL@g-OwFd1nw2#~8Q$F-9h$;XYmW zxI6A1TDWK}JevN8IiL1u3LZ`MFq!g9igwF8!=tG+T(lO?5$(}*#hg!jG=--})AcCr z){NmqL};x65y^*BdZxdrI~u~A^HxJd;^9;g-5bQeqIwT@G@L3JAW|_f6S}^007BJL_t(oh3%HX4udcZLtDiE z|FU-gp(QOL)l!I6FH>b$idu?(`Os~ z@r%eI#oV9A!Q79N_NkJxm};+o76UkHyH(Ts0pJ^=oOop}$63Q#lsj_&?tQCJw%_4_ zD6LOzV-BGV)n?hZf50(xTzz2Qc5m{0DwT!f1LK=!Ut;Syx&QzG07*qoM6N<$g5qa< Am;e9( diff --git a/test/select-font-face-ps-argb32-ref.png b/test/select-font-face-ps-argb32-ref.png index fdb3ad2d920d5dddbd15945564980362835e21c8..66980c90b46d20d11892d2042b4fc86c4abc2232 100644 GIT binary patch delta 1380 zcmV-q1)KWe1EUL&85#xv002PZa3}x(00v@9M??Vs0RI60puMM)ks&*OGM9Fp761SR z7)eAyRA_-H!FD{BEp?J-;^J>4&ct6TXG)&cfK`003eDYh93RP8g+OOAZ7-RnFF#lB;WAO0saO*H`%1;0gLV$CA>sT(L zpF^6akWxY^g}Sc680)lGO8w_^z7!z@wAQx{Q`dKz>RM_t!2#-Jz) zEEWqqJw5sRZf3RCB281Tljk|!-`~MG$6~P<)wR~*?d=U!Re>>o*709e72e+7&@_$j zsAK*Xiv^mdK|2Q*Z__kbEEeFL4{|GtVlwAE&#~X{vET3U@$u2IkD>^SG3<6b?Duo!e;U%!4~xm^1GGR8S}X__L6A{0dd#uzx~NYfMmI?rLb zTn=*V+YQiKla!LS+bvDO7^5u9$hFO~jEKlzJNxZ+ON=r9IS2xhQjTgK4hIrKcwHd` zX|0KfXuI7~7>1;^_BvDkq?FXpq2KOsI1KzdyD^kfq_y^c{yFFVI{>~0S(Xt13d4|+ zBq6Oean318l2P5VEIYN#vW&{I{IpNTn2-IG<|)duB&8Gqm~Gp)ad8SEe6Ct+0^n;9 z1OX|fCZE4!&Mrw3;+zk1ch5J=GEzzrV~mc+qt~6X>jNV4o#|BK?SR`!wL2&gkr0BE zQba^_JRT>13+xKmzCIidRF)+H=p^G38T032>*p|+)2RW_)^-oZwFTf~aXNj!?fCjR zbIv=teZ^-xw{tY7aGme79FIrRT2mN?ojBa{lu}ZXBy>0&&Kdxx?A$$vn;iT1+x0qS z*XQTh(&%0$gCIZ{hRE|AaU8>13v2CQd2KH(j4{7|EVkSAb%P)PV+@avkN%o-jyR6N z7(*P#9UoOyAqawjzxGz(E41ShLO?0yU#OiQYi-A7ZhPU{k7-LO@%Z=%DJ7(o*lxD~ z@MWJ)XH4@Fs;WX1MgCfAjjF2f^77KzlJ=jygL6LEa*S!t*%@O7`P6mo+qUi6oU&^( z7ywd#N-xGaN1o@%^BiSaf-weT%%F3gLtmFM2CX&fx<;C&czJn2k|h3JKq=*I+n=vZ zJ1)i;s;cVb3joj0&sWg~fFwzvl=5}7)*=Xki+ql0URpEG`Je;Eaf~nwJA<}=y7pPk zImRY9#@JwjIM=SvU;vDb!1fF3oZ~6_x>Z$w!CLE2YTUgr46)g4I`&MrV$%XuH}m#t;O7uR;6%XMIj-UJ7GuQ1ABYZ>{aDSYOqgLkQtd^nkzn zh?H{n2z$z|&rf5FAH~L)L8BlD{0z-GM_t!`*5;gdY~6RRFz!t~ilWgODT*TR&lrP$ zEX%+-N0KDiY&M;(luO$AOVbo#7<$`w94_HgzNc`r_Ve?zf4J8gc<#3er&rfCvMlpQ zxL@%(rFjas6>$S)ysOJv0Wf9P=Yi1gqYoP{|?4K_L2fkAlc$pSYXY23i=-~0v&EQ-X?iDl)DcFDWq70l07?G6q<^K~ zFJ^frJB~FyG*2L%RxTMy-A?9`QZZFs1!t|28UV8#x0tO!c?7HO_qtZXRX*{)swK?` z_Dfo#OElBRrpoMfqv<@gscWT;#pdsVIDG1$Gk+GddO%m88HC{|sTl!@s8jqAMjO;v zEUX^8G|B_A)sD-iWEX65vb(>!k$)4-r&aIr72pMA)u3Ox%D{T#<1Wq1Zj!K*=P4$+ zybHJ!`vok;+V?>05d87)@Xz9`DO4|CvLUmt^sX)$SWB;mSfxthvZhXX@JL-sD%PDHLk FV1k#$zz+Zb diff --git a/test/show-text-current-point-ps-argb32-ref.png b/test/show-text-current-point-ps-argb32-ref.png index 3213d7f86d7c9ac3c54c42e27c37d96b7eb5ec43..e3f7e7fa0f1693d4ff5bae750439800103678fdf 100644 GIT binary patch delta 1416 zcmV;31$X+|1jh@I85#xv000{gx-b9$00v@9M??Vs0RI60puMM)ks&*OGM9Fp761SR zJV``BRCt{2Tj7zTIt*5Jt^ub6Qi4;0DS?z=N`Mkf2~Ywq!IS_cEG6I)bU*g&2aYi& z%kJL2;hV`!0=A@260)M~UJw!C#EBCp9K8Ls0VhtJ_&aeHhZ84Gc<}}RP?jYO!?3t9 z3HQvmNGaiVyFr?!&@|2N{hviymN1Uv;@ahMd5Oy&e1{GfKCXX* zte?VHbJ+7t#Mp9_y<2kL06q$V)_QS6YyDI(z7kSO$g&KSQouR?HoXQ_RsHix9*ZNn z{vZ7I)f|KnKq)=UmZR+5lC$e;MO9UhrYSrgkElwhwT7}RAx%?%$n$))*fdQ8!!X!x zWgJJ_&E$CwX_{`zbJt5L7wbb^km*#Ulu(xCf}7Ub%Jg+Ku|APf!sGF$=6-rfEP*xv#jeY>IK3J1E=e*?;S3V&G+qSi9`@WCTvBtT7?|V#=#I7TRAf*%$(fV(i zrf9AqE}V1ZoFgJ)Q506snk*MtmRZ?`hryo|v?z)Ki=tTEck{q^Eo6Vl$FUq-ok@~d z-Jv*{dq>%_H-2lm7o*D-2TCb2#_Y>{HU<$w78`{SHer0l!6=_6DCc|;_&FG3Pf0O% z{+2v|0#7 zxJ=W8lu|5;;;F#<{5FS=gKNtizTz7;hf7`8PepPqPHu5H!j{!7MC+cE*bqJ`6110m#pxfPk+XN)b@5JGm%G3I+?EWd70N>$~NB7JGbB*EI+sY|+(PdmmI6Aab}F!!E2Hvwv!l! z!FGY>I%CZ4bGdGDDa#TFA<*|dBuQdBN}nuOpHH^C-sQI!ujHq1{~8AacX*g(*<$|@ zxfzp(d*T<$J)f?oX)KSZ;$W&$RaJ1m-yuy?xL&Wp=`H;9 zB&DQd>7|e;v0*;@4Zv;X_^kx`BnDApW)q> ztv{WcYy4lyy$j;`k5?y7Y~gabfKuwE&gNgm`M(t>PDG$6iXR<*{{+s?;lzm(Ui=21 Wq_RX7BAkc-0000{Ft+Ecijrxl(Jr5{X2I`?m!o62~ETMIs?_U)NPi5v{t#>cy6N zV90(2A9VDX=6{ZJ^88$_D5ca|_x+4HC#NK)1)mn_r}VgM12~$~V2z@71$oAoZ+}?s zTd#Pv##&}BzpETaWQiFTRnb0_YE@&`i+Ju6=;{X~TEmc*oDrZ0^n%ny9r3d-g0%== zIuh;gy@^XHU^ipSTB~U6U%}Y+8s!&b8DCo1A{D?eAw#zQ+4U8b)W=wV_Q^ z4|Cd1EGMAN73O?FF%+br2gZ`X5e=)ni+(BSXY%|89}-|=Y`VZ$IfFv>n}23p%iw2r z*B#W#RPDQ`+KL^r7mM}@XtII+(`MYM72sPCTZXVQR+G5rF^-6gS5rkH1Y5#%FNkzV zGNF^7cdSP%AM!_4fxtmBL1ub`T5Ig)B#{UqdNp?l@*f|Ggv6iR%8A5QWUWXfB)$MW X>iG(44{8|z0000-jHrNryuE(%=1ir-!EUp z4@888(-G1-DdBj=7%($`hzMHixHebjDCtm`nPH5HYjb6el1>Q&6-uXs0bq3@`pv%d zOC$v|(=<)gG!2d8xLow_iNoWJq{D=@)*vEuT^HBxX;M-;6t>oG+dZU|mJa8zPnnrv zt&Mx-_D4j|fs7zXtGEkYcBxRr?X=%zpMbgrg0YH5?1vXRif6zHcZQGJ_ vPIPY--_ye|EDEoYo%EGdk@Qv`>9hC%y?RHyo_S)>00000NkvXXu0mjftKgZ4 delta 215 zcmV;|04V>Y1D^tr83+OZ001|Z0M3y!JAW|_f6S}^005>*L_t(YiS3u&4uBvCMy2`w zuS^#<7yf)18M^7YP3?q0O3dsg;214%u{|VSJ(Gy=fLEC(;z2}Ub^H|bI9DH!K(BI} zB|p~o$a6*S!OXhk2oi~kbv)whlW#Efs7Y9R)FfQ7f82Mj``@^>;MYE;kSOks&qT-l zDpA8IKcd7G^#WM9Zj0D?fMA$GN From 127704c225d4b9f2a4c72749f59a8dfcaecfddc6 Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Tue, 1 Aug 2006 20:39:56 -0400 Subject: [PATCH 13/15] Look for per-target reference image too --- test/cairo-test.c | 96 ++++++++++++++++++++++++++++++++++------------- 1 file changed, 70 insertions(+), 26 deletions(-) diff --git a/test/cairo-test.c b/test/cairo-test.c index 7ebbfdc9a..dee30a941 100644 --- a/test/cairo-test.c +++ b/test/cairo-test.c @@ -193,7 +193,7 @@ static void xunlink (const char *pathname) { if (unlink (pathname) < 0 && errno != ENOENT) { - cairo_test_log (" Error: Cannot remove %s: %s\n", + cairo_test_log ("Error: Cannot remove %s: %s\n", pathname, strerror (errno)); exit (1); } @@ -1470,6 +1470,63 @@ cleanup_svg (void *closure) } #endif /* CAIRO_HAS_SVG_SURFACE && CAIRO_CAN_TEST_SVG_SURFACE */ +const char * +cairo_ref_name_for_test_target_format (const char *test_name, + const char *target_name, + const char *format) +{ + char *ref_name = NULL; + + /* First look for a target/format-specific reference image. */ + xasprintf (&ref_name, "%s/%s-%s-%s%s", srcdir, + test_name, + target_name, + format, + CAIRO_TEST_REF_SUFFIX); + if (access (ref_name, F_OK) != 0) + free (ref_name); + else + goto done; + + /* Next, look for taget-specifc reference image. */ + xasprintf (&ref_name, "%s/%s-%s%s", srcdir, + test_name, + target_name, + CAIRO_TEST_REF_SUFFIX); + if (access (ref_name, F_OK) != 0) + free (ref_name); + else + goto done; + + /* Next, look for format-specifc reference image. */ + xasprintf (&ref_name, "%s/%s-%s%s", srcdir, + test_name, + format, + CAIRO_TEST_REF_SUFFIX); + if (access (ref_name, F_OK) != 0) + free (ref_name); + else + goto done; + + /* Finally, look for the standard reference image. */ + xasprintf (&ref_name, "%s/%s%s", srcdir, + test_name, + CAIRO_TEST_REF_SUFFIX); + if (access (ref_name, F_OK) != 0) + free (ref_name); + else + goto done; + + xasprintf (&ref_name, "/dev/null"); + cairo_test_log ("Error: Cannot find reference image for %s/%s-%s-%s%s\n",srcdir, + test_name, + target_name, + CAIRO_TEST_REF_SUFFIX); + +done: + return ref_name; +} + static cairo_test_status_t cairo_test_for_target (cairo_test_t *test, cairo_test_target_t *target, @@ -1479,42 +1536,29 @@ cairo_test_for_target (cairo_test_t *test, cairo_surface_t *surface; cairo_t *cr; char *png_name, *ref_name, *diff_name, *offset_str; - char *format; cairo_test_status_t ret; cairo_content_t expected_content; cairo_font_options_t *font_options; + const char *format; /* Get the strings ready that we'll need. */ format = _cairo_test_content_name (target->content); - if (dev_offset) xasprintf (&offset_str, "-%d", dev_offset); else offset_str = strdup(""); - xasprintf (&png_name, "%s-%s-%s%s%s", test->name, - target->name, format, offset_str, CAIRO_TEST_PNG_SUFFIX); - - /* First look for a target/format-specific reference image. */ - xasprintf (&ref_name, "%s/%s-%s-%s%s", srcdir, test->name, - target->name, format, CAIRO_TEST_REF_SUFFIX); - if (access (ref_name, F_OK) != 0) { - free (ref_name); - - /* Next, look for format-specifc reference image. */ - xasprintf (&ref_name, "%s/%s-%s%s", srcdir, test->name, - format,CAIRO_TEST_REF_SUFFIX); - - if (access (ref_name, F_OK) != 0) { - free (ref_name); - - /* Finally, look for the standard reference image. */ - xasprintf (&ref_name, "%s/%s%s", srcdir, test->name, - CAIRO_TEST_REF_SUFFIX); - } - } - xasprintf (&diff_name, "%s-%s-%s%s%s", test->name, - target->name, format, offset_str, CAIRO_TEST_DIFF_SUFFIX); + xasprintf (&png_name, "%s-%s-%s%s%s", + test->name, + target->name, + format, + offset_str, CAIRO_TEST_PNG_SUFFIX); + ref_name = cairo_ref_name_for_test_target_format (test->name, target->name, format); + xasprintf (&diff_name, "%s-%s-%s%s%s", + test->name, + target->name, + format, + offset_str, CAIRO_TEST_DIFF_SUFFIX); /* Run the actual drawing code. */ if (test->width && test->height) { From 9136c217703d1d6aab1742f522aa0279517fb36a Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Tue, 1 Aug 2006 20:40:54 -0400 Subject: [PATCH 14/15] Update reference images, mostly PDF and SVG Also replace some SVG ref images for rgb24 and argb32 with a single one where the two have been similar. --- ...2-ref.png => caps-joins-alpha-svg-ref.png} | Bin test/caps-joins-alpha-svg-rgb24-ref.png | Bin 2454 -> 0 bytes ...posite-integer-translate-over-svg-ref.png} | Bin ...e-integer-translate-over-svg-rgb24-ref.png | Bin 15465 -> 0 bytes ....png => fill-and-stroke-alpha-svg-ref.png} | Bin test/fill-and-stroke-alpha-svg-rgb24-ref.png | Bin 509 -> 0 bytes test/font-matrix-translation-svg-ref.png | Bin 0 -> 970 bytes ...ft-text-vertical-layout-pdf-argb32-ref.png | Bin 725 -> 804 bytes test/ft-text-vertical-layout-ref.png | Bin 907 -> 907 bytes ...ft-text-vertical-layout-svg-argb32-ref.png | Bin 799 -> 0 bytes test/ft-text-vertical-layout-svg-ref.png | Bin 0 -> 880 bytes .../ft-text-vertical-layout-svg-rgb24-ref.png | Bin 808 -> 0 bytes test/glyph-cache-pressure-pdf-argb32-ref.png | Bin 2879 -> 0 bytes test/glyph-cache-pressure-svg-argb32-ref.png | Bin 3635 -> 0 bytes ...f.png => glyph-cache-pressure-svg-ref.png} | Bin ...32-ref.png => linear-gradient-svg-ref.png} | Bin test/linear-gradient-svg-rgb24-ref.png | Bin 1000 -> 0 bytes ...ref.png => paint-source-alpha-svg-ref.png} | Bin test/paint-source-alpha-svg-rgb24-ref.png | Bin 505 -> 0 bytes ...2-ref.png => paint-with-alpha-svg-ref.png} | Bin test/paint-with-alpha-svg-rgb24-ref.png | Bin 516 -> 0 bytes test/pixman-rotate-svg-argb32-ref.png | Bin 0 -> 258 bytes test/pixman-rotate-svg-rgb24-ref.png | Bin 0 -> 358 bytes ...rectangle-rounding-error-ps-argb32-ref.png | Bin 258 -> 0 bytes test/select-font-face-pdf-argb32-ref.png | Bin 2237 -> 0 bytes test/select-font-face-ps-argb32-ref.png | Bin 1443 -> 1333 bytes test/select-font-face-ref.png | Bin 2481 -> 2473 bytes test/select-font-face-svg-argb32-ref.png | Bin 3064 -> 0 bytes test/select-font-face-svg-ref.png | Bin 0 -> 2430 bytes test/select-font-face-svg-rgb24-ref.png | Bin 3064 -> 0 bytes ...show-text-current-point-pdf-argb32-ref.png | Bin 2157 -> 0 bytes ...show-text-current-point-svg-argb32-ref.png | Bin 4236 -> 0 bytes ...ng => show-text-current-point-svg-ref.png} | Bin test/text-antialias-gray-pdf-argb32-ref.png | Bin 950 -> 0 bytes test/text-antialias-gray-ps-argb32-ref.png | Bin 310 -> 0 bytes test/text-antialias-gray-svg-argb32-ref.png | Bin 1077 -> 0 bytes test/text-antialias-gray-svg-rgb24-ref.png | Bin 1033 -> 0 bytes test/text-antialias-none-pdf-argb32-ref.png | Bin 950 -> 0 bytes test/text-antialias-none-ps-argb32-ref.png | Bin 310 -> 0 bytes test/text-antialias-none-svg-argb32-ref.png | Bin 1077 -> 0 bytes test/text-antialias-none-svg-rgb24-ref.png | Bin 1033 -> 0 bytes ...text-antialias-subpixel-pdf-argb32-ref.png | Bin 950 -> 0 bytes .../text-antialias-subpixel-ps-argb32-ref.png | Bin 310 -> 0 bytes ...text-antialias-subpixel-svg-argb32-ref.png | Bin 1077 -> 0 bytes .../text-antialias-subpixel-svg-rgb24-ref.png | Bin 1033 -> 0 bytes test/text-pattern-pdf-argb32-ref.png | Bin 1632 -> 0 bytes test/text-pattern-ps-argb32-ref.png | Bin 1681 -> 0 bytes test/text-pattern-svg-argb32-ref.png | Bin 1708 -> 1749 bytes test/unantialiased-shapes-ps-argb32-ref.png | Bin 4076 -> 0 bytes test/unantialiased-shapes-svg-argb32-ref.png | Bin 19689 -> 0 bytes test/unantialiased-shapes-svg-rgb24-ref.png | Bin 19689 -> 0 bytes 51 files changed, 0 insertions(+), 0 deletions(-) rename test/{caps-joins-alpha-svg-argb32-ref.png => caps-joins-alpha-svg-ref.png} (100%) delete mode 100644 test/caps-joins-alpha-svg-rgb24-ref.png rename test/{composite-integer-translate-over-svg-argb32-ref.png => composite-integer-translate-over-svg-ref.png} (100%) delete mode 100644 test/composite-integer-translate-over-svg-rgb24-ref.png rename test/{fill-and-stroke-alpha-svg-argb32-ref.png => fill-and-stroke-alpha-svg-ref.png} (100%) delete mode 100644 test/fill-and-stroke-alpha-svg-rgb24-ref.png create mode 100644 test/font-matrix-translation-svg-ref.png delete mode 100644 test/ft-text-vertical-layout-svg-argb32-ref.png create mode 100644 test/ft-text-vertical-layout-svg-ref.png delete mode 100644 test/ft-text-vertical-layout-svg-rgb24-ref.png delete mode 100644 test/glyph-cache-pressure-pdf-argb32-ref.png delete mode 100644 test/glyph-cache-pressure-svg-argb32-ref.png rename test/{glyph-cache-pressure-svg-rgb24-ref.png => glyph-cache-pressure-svg-ref.png} (100%) rename test/{linear-gradient-svg-argb32-ref.png => linear-gradient-svg-ref.png} (100%) delete mode 100644 test/linear-gradient-svg-rgb24-ref.png rename test/{paint-source-alpha-svg-argb32-ref.png => paint-source-alpha-svg-ref.png} (100%) delete mode 100644 test/paint-source-alpha-svg-rgb24-ref.png rename test/{paint-with-alpha-svg-argb32-ref.png => paint-with-alpha-svg-ref.png} (100%) delete mode 100644 test/paint-with-alpha-svg-rgb24-ref.png create mode 100644 test/pixman-rotate-svg-argb32-ref.png create mode 100644 test/pixman-rotate-svg-rgb24-ref.png delete mode 100644 test/rectangle-rounding-error-ps-argb32-ref.png delete mode 100644 test/select-font-face-pdf-argb32-ref.png delete mode 100644 test/select-font-face-svg-argb32-ref.png create mode 100644 test/select-font-face-svg-ref.png delete mode 100644 test/select-font-face-svg-rgb24-ref.png delete mode 100644 test/show-text-current-point-pdf-argb32-ref.png delete mode 100644 test/show-text-current-point-svg-argb32-ref.png rename test/{show-text-current-point-svg-rgb24-ref.png => show-text-current-point-svg-ref.png} (100%) delete mode 100644 test/text-antialias-gray-pdf-argb32-ref.png delete mode 100644 test/text-antialias-gray-ps-argb32-ref.png delete mode 100644 test/text-antialias-gray-svg-argb32-ref.png delete mode 100644 test/text-antialias-gray-svg-rgb24-ref.png delete mode 100644 test/text-antialias-none-pdf-argb32-ref.png delete mode 100644 test/text-antialias-none-ps-argb32-ref.png delete mode 100644 test/text-antialias-none-svg-argb32-ref.png delete mode 100644 test/text-antialias-none-svg-rgb24-ref.png delete mode 100644 test/text-antialias-subpixel-pdf-argb32-ref.png delete mode 100644 test/text-antialias-subpixel-ps-argb32-ref.png delete mode 100644 test/text-antialias-subpixel-svg-argb32-ref.png delete mode 100644 test/text-antialias-subpixel-svg-rgb24-ref.png delete mode 100644 test/text-pattern-pdf-argb32-ref.png delete mode 100644 test/text-pattern-ps-argb32-ref.png delete mode 100644 test/unantialiased-shapes-ps-argb32-ref.png delete mode 100644 test/unantialiased-shapes-svg-argb32-ref.png delete mode 100644 test/unantialiased-shapes-svg-rgb24-ref.png diff --git a/test/caps-joins-alpha-svg-argb32-ref.png b/test/caps-joins-alpha-svg-ref.png similarity index 100% rename from test/caps-joins-alpha-svg-argb32-ref.png rename to test/caps-joins-alpha-svg-ref.png diff --git a/test/caps-joins-alpha-svg-rgb24-ref.png b/test/caps-joins-alpha-svg-rgb24-ref.png deleted file mode 100644 index 24689364fd58f2e4b8b4ff3f1a8ad34ec80da202..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2454 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 diff --git a/test/font-matrix-translation-svg-ref.png b/test/font-matrix-translation-svg-ref.png new file mode 100644 index 0000000000000000000000000000000000000000..92ad17b2da7ac25a65c67f1086c19a0b82acc34c GIT binary patch literal 970 zcmV;*12z1KP)p+uM?)=jUhn{eJE3 z?aAeG>HhwH^rh^Fo0}Wz^*Vt-puJbER#{$N24Hq}mczqCwzjr7K0e0h^I6Z#uo=te z^X>i1%S+AA&ksD^+uNJg*4DJXzAnQs^z!oZA!D6fRx{Rjz&f2yip64ky|S{x?(P6cBofTc&5_IHSXx?Qe}8`<*QYXead9D^&nJh&p=2^CNxHhaQXmk} z;^LxKS6AincyxMts%$nZx7)3UhX+a01%jmW0;aCIxOR7!wU3Z9)KpW<<|e#btDPN4ry&-Djg4lId>*`BC>Eh* z(=biQWSTsKxJFjWLP46ImO5;j4i2Q2P1EzUl~b=b7gm9ighZlGR=4x2`` z3N4$)>?|A}!qyfXAHy&c&t5 z*6D2a%{x|BU~&>VY#Ohx(6VVH5->N{{4kc5pu?v1aP?rA9=o`Zd_KwHkXklPS65OX zAT2IRtE-a7Bb}Z~*{tMtOD&tG$46;lL2B8w9M!YVr+%|29tiv@etE}OaK4?07*qoM6N<$f|YyJ^#A|> literal 0 HcmV?d00001 diff --git a/test/ft-text-vertical-layout-pdf-argb32-ref.png b/test/ft-text-vertical-layout-pdf-argb32-ref.png index dcc3d8bdef3d899e185e367285efb134b1f98824..19f26b6cc34ccc20fb28bafff1bc2e631c0c880d 100644 GIT binary patch delta 765 zcmVF-bky7U8(N9A3HsY*8#fhEAQ)uO zu1!KKD-t9()h=8Vw8=$Hn`+l0upkgx1koZ2g@W={1}!Slp=?vicNa7Lc-Nb z=9~8%=HZ)n&N(0=B04`OfB;G)=qnV9#kRJ#K0AOO1_ez}wr~R;x9YO8tCOU0t2Dt^iPFCEec2 zQy(5kr6Pb14j6z32L}Uzz-K2E3ibE*%izw=lG(kz1b@)X3$s|kg z``Hi(1b=)!pH!DieV?4*_!yU$C>D{+L9b`?see;8o8@_4s%7xm8M?di76xi+Sn|AH zuR@_nr_&tA#p7|w{P?T8y3p1J0QdJeJY)%;o}P|GBGG8nWHL=nP06m5@#v_WN?#v! zbWkw(B^e(b9Vrxwr>7?(k~9(EcH%Z}f5eSNJ|Dpe{Kfbv2Cx3@?p zv9SRFHXBY(u(-&QH#Rm_QBfg^;?B;_?Ch*ksRU5YamZ%n4TR&+)P!IV4GnCNJkLj? vQK>eWOmlN{4u?Z}{QvgqZ}2zx-vj>wH{3bkDk|4%00000NkvXXu0mjfzjJcA delta 686 zcmV;f0#W^>2Gs?SGk=XqL_t(YiS3p>ODjPXhTly#0XMs@MhibM7Mnt%s33?CRE+)t zMH>YJwj!d1UC`S95N!lg#6q-jaS^w$Q6g3W(TntFN&sE&M|n5$B$D2n3u`zw{oo5iubjBFNx0Dm?&v9baHL|`sm*KON= zeSOt+{msG&0yQ?`=m>!T09Y185j@Wr91e$lJ|BRao13kzEdc1~AeW2EW%k$mp+cb` zief62N~KbgBo&KAB664}+S-svydUlM7B4T1-HpX!eSLk3q9}^e+uIw9#Q<>OFdZJk z>BQ6&3+2lH0U)A{jg70TD~^bWkVqhzgx8DVVR$^ur~ua1)~>Iw_xAQaER&OyU0q$MVNwwh z(cIjes;ZwYs;bV<&vR6Zvi%1+J}*{R(cbaG?NALm~lDWL!u9 zGMNnbS4~Y#)6>(rTn+&C_eqkfFNDWKJ3B0sE1gaQuq=y+Ow$}08ChCdA|l7a0-R2a zjbUH_0QhD z2FHQtF@G^pZQ5*gd3ot}yGx~#EX&W&&j8TbNu#6h@$mTws9}tWC?1bDH#gh1&FAwt zJ3}ObTn?EG>g#Lb@rPPlTTRn^dU`@6LT>k$uTL#JJ~=r#KR-V>I2all8Xq4gB94eu z6{n|YXh2H~N+pCs@cWs$cz=ICJ3IR}7X)E&a3^qaaZ#4#pV6y-!N1^N@P7&Z1Dmxj U^0#9SkN^Mx07*qoM6N<$f>zEscK`qY diff --git a/test/ft-text-vertical-layout-ref.png b/test/ft-text-vertical-layout-ref.png index f05f3c64c44daf832160c67ec465c17b6cfc46c2..7ec34ef8479e698dd5af0d113daa7624f18f7b0f 100644 GIT binary patch delta 18 ZcmeBX?`EH1&n_m-cP+{xbEBIpGXOFp1yTS2 delta 18 ZcmeBX?`EH1&o0Q!u5qbMaHE?mGXO3j1l9lm diff --git a/test/ft-text-vertical-layout-svg-argb32-ref.png b/test/ft-text-vertical-layout-svg-argb32-ref.png deleted file mode 100644 index bf4db9b5bd2c6a532412a666a51f380bb49be7bc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 799 zcmV+)1K|9LP)X00004b3#c}2nYxW zd zXa~1~=pZ=x52#DQ3~?zg4QB9$PQ~C9NR~v=BQzl>SxDD`?>Ow$y<-!Jugy%BE-hvD!LoW%&3JKxsOOWm(i} zHLBGrmSr{Kny!m=T}+1i2!4`5;fY#X9cm1d8}8NomxfMFN}gFyh|@i-?ZCs>w+_VcI6yLS+e zH-A(vt9^LeB$G)-Mn(vS!%gv(l@<2(_R!QWP$^C(!Rv)rub`vj_T>QP=H^JHQfzK+ zHpR!s$La6yhr2r(is|WTiN#{q;;~pvW@ctY6LGrY{T(e=1D`%YZ}0Uzc~@K${P9C| z7TdlHo$Is!luByFc6Zgub*j7oWV2Z`O>2yAF?jI;wzi;J zbx!aP#bOZ=A(cvz%jKA#pI3tK->V}1<_)}jsa|%ni(JL)^%4jKI6684z@_WpcEk2I z)N0V$3g_p}i>YY_Phzssu$~U;s2t-Co|lZSKoXkw_$HYipxYso?Q= zI6FI26VINByncOAAbmb{Vg2&OnL?e(WCW06vDk=3qfzPZ?v`4uCa&XS`2HO}e}+N< zvRQce(D@a-Oixb_`Fx(!(^Fg@KETovEG%5SP%1eul}IEo3C}$55$2FbIDC?Th7dIi{wj8qd0}GdeoT?CdNakB9%S7yoPA3*MA_!JBd~ dcvJp)!QXd+D%YG{x{?3@002ovPDHLkV1l1TcU=Gg diff --git a/test/ft-text-vertical-layout-svg-ref.png b/test/ft-text-vertical-layout-svg-ref.png new file mode 100644 index 0000000000000000000000000000000000000000..9bdba3220f15df961ce1a63954c48e1286de8ba4 GIT binary patch literal 880 zcmV-$1CRWPP)X00004b3#c}2nYxW zdZpZi|tS$5WxuDTpDnS zl?p)@b(0JhI%Uu|NYp_bgeVAs4u#S|S`-vCenfC+8`7Y0is9ek>U)Yq2gz#(|8U^m zbI#@cIPcsK@LK!(Bp_^io0=<~PIGN-?VcYugLqs8939n^jipkF7K??FB(Yd5-ig%! zK&1jKEI?5z1(eIsOe-rZ2m}J??(W9&^77pvNv6}J)k->@q{l-(eM+vbYFELYo*vH4 z%`ufqF>qiGd^s21vV|eE*)Dm=NPoNE^6pHcOMq#PjoWUS3|(VzF>{cUOtmY0Y83J|M$+%&m$ZT!)!LgXfz@ci9nWRHQ~bt(&bV&$c@=-WFk@B z>QyQgdc9uSY&QD+e)|1>+U<6_TrQT&Ws)S?+sPL%$c6?o8Wra8kk6l!EiKgrTwhJ zMv2|o#V=n1fq)qQ{0V&hstw@e2D5wXuBmu3hz}Ohj++1BS ztJR8RGO5fR4hLptX5jPr6yM`r{7^jtK2(o@57i^!L-hxu&y~!0I;0i=0000X00004b3#c}2nYxW zdA!@{@5lbv4qB^wKSp*T?L_;gi5=|;YbIEbg8sU z9K|U}r#iRbpqXNz9V$`{l-km*i*(Br(G!HwQbI@~=}`UM!F!K4$-PhzPdfO(8NT;- z4m^D4{r(_HpFT+sA4)?*(&(u4^r_Tr%2l?uwzRpq*;S`dki1?A+8^6?Pp;W)DjW{W zG)>iNwYJPtEM_tu52RA?`7=Cw2B8q#y9cI;E9CQeDwPT&BO@FiA2TsAaTW#w(yd!k zx$NGIbuu|Qsnyk0<#IVC5{b5~=YpkDNx@)H^?F@LM@I^W!zvbwPTn^*23M}Yix=?o zCsZo%{5gF4=Fab3TU#TUOcDx(2m}IHmPIz3b#mj~JIS)3)oTCHw&Bj5iXv9X>V`OdE)W7 zv*mE{8voDC%#70MbXR?0VL{W=(~^2Dn9XLjzrWvAFPF>8X0wtcLz4d87vH}_vkBL) zLpXe~J@`BHbrv2!hS5>T<$9shjkmLK?Hc^Ope~$dv&s7Ux-*W&Vk8m?1_uYv1SNR+ z5QVgQ=;h)0dt+k%GbQ%fhQy7r#hs z+ZNDvK}e_5vMkFP_q}-o9uMU6@cQ+sw8!J#EOt_@R*6I+&e&_3aQikqdURTN@Blu1 za91jsOkx-YwryjYCObPjPS$4_?boVs*u6#a51CAc<>h5oR#u2cqbx2io`pk0QYTRz80000A}f1T&Pp6kBu>%OBb&5ihYMR@@L;4?ASw*vP`@P$G+ z!0#y;9Z_)O^uw4~Lm-f`DT^-vz`JFluV?M{bomttcYRo_{V${>>ysp$_p2DD=^{49 zF9#Qq=N2hY;ECcoau=s&k{f3!GJ<&n^Z9U&k^M!iGbWP5R3Ntn4~ctTeAiSpck~U6 zqIr{GYGhA*OcrlwtY_FYX(a9JMEGS9d)Gs=<}!(WI@K&aNRttIP0#u8;qmPbBRS{C z0cg^$b^hn8-8nWzq_vrkD=RDI_xdVsE>n`P8ge@S!@(v)s8$8mh)KWxz%cj?S0weS z-4%!gUdr3s*x0BB{ur;Ss^U>k%jJqS;SD;J zu)2QzvXT<}|A)xislU>zbM%H#b=%GNFCCvZCU(ASWlMgTl*J=L|GS)NUi>fSF@7 z;t>!Ux<64Lc$EYf76y^1s;aI9(dYWIj)!5AO=X}E#HCAR=(xBzDwSFl#0h8(<9KmV}tU~_Ad%nfwRu5D~=l$9w00L6Rj#{~Fr0_TpnS%a4~ zGK#onNdCQZ&)ppn)2it^(~*1$zqq&~F`bpm3Rusm_ z39oz4%*}BE?(XhYUK65lc4W;EUU zudpI`{oC8OZ)av)(r~W1yjgg6_r;D5i2Lxsz`*cu4ipw8Eh7`wG6gxxQDT#xkNfS5PwFebIRM<**Q8odIjCy-oCXo;U0L zqx6YeKOO}J_H}g3FE0891~!K7tRWlst*oph6OD_DqxkvxNhH$So>^b=_7u0!v!+`E zLqozRPYObgs;2)bsomWW5K(b#N@vV%M7OCv9l;+_?mk#3rsg%?K-}uj#;*M8EVV{} z00Wmt@1jIj4#q}D>2$ik=IJ#-ad8Jn$GA}%TZ6ggDRe* z%9S_cVnNb*czF6Lpk$LSSbUuoJrTaMK6kjk-Un^&?KM|QD`vWRtQu0S%uG!!>nkc= znCD|5GBBQ}S42*qHrPx}P3`W+L8ibA#Tibo2Aw%`#*KkV8oB@C8j-lSvGAFx9S$wE zD{u1;SoGJ#FD%)}Qy^1<%kNa8m|D*4Gnz|J7*x zy?ZGy_x*cVB^WPCfA>4Bv45&F`4Z>`KgMgPfBvLd72vuahz@*ODlRODryP*i#J+4H+33pwRX~8kp~xOr}AMu$^d3dvC9Tgv8W%t)GB^Kx=Dj zx~ivdKtL7K-qI54E=Qo-B9b|PT&se{M%|}Zt^{aiCCX*wvboZ5ZPkPBDnsoRfA|?`K1<%$%VBo7yiX*pf9o+Z zG0_VAp{#|_(5QX)?(ZJgEOj5rix)pKR|hLXe}M$_ni@m0i;9Y>tGAwW|K(vFbwNTx zLS5aKYL%RlVuQzX0v;Qx%E}Z`L~`fgAe`?5p%ws4sj!hpnvMYh0YO3AtJCd*f`X0? z4#mW9XkC5%B_ZDKHCkFp0+2mX@~$me~zNt$-yc zZx|Yl27oeKhilhX=b2KuE^K-*bgPKl#uFArnT`Ckv9|WUx>}d~J5*0k&&T zWou)TLe&=+7k`(aA{xgvA@b$tNukNME|fen-0t>}lw^mC(r@$!Sy@?Q3yZ_AF-TRf zakr3w&v{ov(N1#0_!~E-?uF^(<!^TO;5hf@j6Wi{HMrtq+g~&RxEoggZY;559~- z{oOu2@&+L%hs$C9t4lru^fQ^a>tryfG+ef&Itm4aLjQA7I>zzTLE#=sWE-uN=Ft+) z2eweh_bxo|-IPV2H$BNSaCCIEut>0*JHds`wgmOb4fGEWUw}dYpf5`oUo;46P)SKi zQnLAzErmuyj$TIy@tR$1!b&EFgoL~=FYnn@?iwnw z2NUe)>&xy;FDm-}wKe8fNJCQ6^*eW@fG5V%DapyCgI~j-*uZR;m6eI}=Q9`#I^97s zku^4!rTGXUEj{yzYNn{DI3%N?r3JRA(Dfd*g@pxBX>!6{OB|v?LX@FE00_gZf@@_3 zwP;5mpw-noW_>|>0iKxWJJEv_rKKr`IX$mb9(?OgJAP6@x#+2}bf$)1c#kX6p~kYr zhGtvF@rP{zF)=YH^!4Wjum)*_26vel9pWa~4Nq$a^@H9ppBXHbH(RODof4^_pm5{H z4IdvL&@|)Y4D?}j^=)(Ib16ut_+=Oy?psR-D=Tio(8#F1 zzP_vkoEgAz1pGVUtgfo5_|)?9!Pvvb+YwkSc4A_Jg%=QO+GOU4eZBnJa{>)?xIZd3GxPKI{x56S;_#%gi%V{P{#?vSB&dktp&?bz(F(FXQ>=f% z-^;2EaUL^-isGPIoAVLrpf)J8SE^1 X%g`7QpjeW@i5M_3FxM}|+36d8D>J(7{&Z{AxrtmzKuj84aUBWeHXHX-@Yrdj-6yDvdzezm=MOA zC0kKZ6dLq@<~nn}x#l|O`sO_E``*tp@%Qw#8R@y`ArJ^7N=M^9SeL>365R!G&eDE) z7cA7iYA9nm@Cu=`j|10jqcl{Fu@T?QUG<(lWC`0d^X_xdymN)xfys!5rbZWkK`8PC zMRc56<4XBdR@q)(N7l=-Vh=x84Hs6X%f`>1RZyBYI8@)SR--UeHu_-CA#m+~bD*jX|>grTnTwE70yK6(Kh7TX!TnQ#aTg;NTx3?eK zR(ExA^YHLUOjXv^!9+5*{|P#98DCsX%FWGH+6Xp>g0G@U@o6D~`uXE#ZLd8(_MRN? zlWSi{P+z#vJ2Ao3)6?^!swyHXs_)5{?~$16v6$<;UU*?);kdXs4ln$vrlBEIS67#1 zym-9EhkDIf9wsKHxWvTAC27W(1g;qeEZRkgJPzrQWmSX)1l=ssaap-}g#r{5BZG?0_u3!XYC)Wo*$ zYA+2^P!Q_p=qNy{vq&r|x+-)z!IE}rZZ00|RfBG%TxfMyzjG(?jjO9`6z2NSyG&6g z1R|yL(Jm!K$9AU9LP$vHl07RuO$xU><;vVhX;~Tdo90?gW8=$p7M(F^X_rFwdT86c zRwJ|E&d$#078h2f(*vW+tgP2WM06|bEA8PE0jSWd~OWMnX}a-PU3d+Lq@|@jVHGu5Nt7U{fS>ZjX~Dh9IAP?u1V0in10i_6Of7!b?Q*ciDtKR@5#G=?}LlkJGPvTsL6r<`{e z+kIzSTpy;^24gUo)WE@k0p~dg%CbAGU~MqjE+j-TQ}>_hmoL#6%;-d^_TRRH1 zGg(<#W#r@pP?ntm$+nHzE-hxCo3Rso-7k8gLIyMa@9lyV~{$IOf5R9042 z$kE=lJG#2J97j3Mw?eju{|&o9O`V1m6%n~*+fR4hwCTUOxw)j|P4rzl#uPR39w z?-o!n2Zwu~l*FK4sAR#hvmck5TKW3*>r1ri>gsi7EeXh+!a{?14YiDu)5B$FPfvr4 z^Id^F;PCbF!Fqa*t*lsQ*qfPgrSd2Yc6BKV2ngI4V{7i}%10hg8YoY^eH#}R7B>3s z-KR{^hd@z1BO{~pYpRSt3=Bj=(1wORfH1jvdHbEa1Upq#ipdWjveVOxeYq(pD4q@5 z-?p8OzFvTAw;yKKMKTK@k&@EVPl4!|4nJXje*T=NPy3>w>^}ROL?kLxR}+#i?F2I@ zR3esYr}~U$OLYbQDA8AjAry7uHG02(b;BtJWys0NsV#Q+RT+yEgjJT6c`bDXAyLU% z>g??7e~ym!MsuW3HlAAr9__6n)_|y=)`y=4?Qh=ADAN;Q3G`{tClCmcwe$042^xGh z_;h3kLQGuT6oV0yOh`|IZla;;b&K$47(N9>~bZ*aNmIC@46)xsC43)I*yp4GK5&<$e9;({;<$Aj3}a z63p>|YlDoS)*r^l(~^^uDVK+aVhs%qDFF$41`^qQx2LL-5))bG3k{SYH7{Q>AMN4~ zahDQJn;oU(buW!c|#AFP~X;f zU^#k&bInfsUnVQn^0Z1FFxnzewg-H#cg?$*&nJIw&+sgD(Ocv9Ywkmw*E;=IIvD!C-@6 zk|`kCsfd9O<#%jcToT^B)0L5x?O9kbZ)mpZyRb+IHLtI8o~*by#+ObjN#MnxUiXcv7xaibWcuh@>*XbXBP}K`{b#=kyin6k+*RR9qqbXxzVjxcr z4*byO=6z#haG>nbTB`D^1VK=34q2CHD$9h>E0dK5?4Q4DN`j`>(A4aio8wGLNtx~N zua-Rg%l2{1#I}*+sh|O=i5xP}&}jvO!GgECfhQYP=rLinwTHsj&uLt7H!migUweDq z$;rv?@cYNN@88F?x3}wa0-zlo9bFX`zQ~n)Ar{87-B|G|!=Q8mE5*pbaPTkI);7|p zQop#ShQYzXK}bS^b~xN`4-iiFJ??fQEgW%GUY--6AA-A^6cIr|4~5bwfX2pW`R3*3 z29JY*mz0(L)?-v<3|7|9_{WF6y}gv><>hUDUotGOsK>&lN3JLYh#?dMua1La2Rl%_ zArcvN%bBC2qrCzG2FbhKsWmlX>l+(AMB-hi!u_o=(7cpDJiDP3)_LXQb(XTSvX$Ow z=sl54bc1z-N%z*)WPiWLPQuFZ4khr8KYxNl_K7!z#KijNTU;OWKp{ySQffQ-A5Yt% z>M_{v{aD5;B=rh~4#7}6yHZlVKjypd(0 zcF#Ua1$;%fb$0TLi7^0B4U}jmLKLADot+9LrKQnD&N8`{-65u?ro9Dd6B9NwbMw{p zb!u8#TEBpRPg7M!5FAef@QHXZ@l=5(LTMu#M?Z#my;t5)P*YQ%l-@l3xiQlC_|QW! z=qELiNStl=b*lgA;o)%v0>|pg$`dAjt#f4`|Na_LTPr>~IvV_Tx!so*z*gt(-DqGk zZ1pWItbMU?S_p`Ja86E6{QU2OgZ@Ulq5m`k!8Q>yQ&azKZ@ctVf~Yb@BK?*>Lp>EJ ze(^#F{p{k!i=n^2KrJ$tT3h9~l|ncW2*ke|innh!0zZPNXluu2eY?37NComEdxF-+ z#s(PhB>mf99NPSM*nE6^{%id{e9Q0iJtPuo{qC9Y-oe4wANO}7o13M9bv1ggX@ML; z7#cCqA%Nh)uc*ikx;_@pOX7|HYrFNn01V4z0ljPp=x)7iNs5VyiO}DZu^<7R?DfIv z=;=TFX+jDJlz@O_VqyZ?Dkd}YLFzX45h#boH z97%Nd)2B#4ot}XKnm5fCUESTM$&_i0H#fJnt1Gk-oz&1ES>WT-&JD2D(A*paVy>H;+baN4hKPs=FE1|@YwN3y zW4KzQu{=*gJji4<7M*N>HAByYjT!*I#W|^{sLmsq@7DY1yu2%j+rec<53yJw7Z;aH z%*-F2R_(90efIVtzra1G?Y(Z$o;DcNAm%8-{ zs@SznVjc#>Qad}l9RRAS0S_A-6+(kw?>)ZhCuajIRg6I$NR_rittba?PD5Q5Uw*Qiso Gj{G0zZUeah diff --git a/test/glyph-cache-pressure-svg-rgb24-ref.png b/test/glyph-cache-pressure-svg-ref.png similarity index 100% rename from test/glyph-cache-pressure-svg-rgb24-ref.png rename to test/glyph-cache-pressure-svg-ref.png diff --git a/test/linear-gradient-svg-argb32-ref.png b/test/linear-gradient-svg-ref.png similarity index 100% rename from test/linear-gradient-svg-argb32-ref.png rename to test/linear-gradient-svg-ref.png diff --git a/test/linear-gradient-svg-rgb24-ref.png b/test/linear-gradient-svg-rgb24-ref.png deleted file mode 100644 index 4ed4bfa83a3fb59c21001ca3f4a1171214dbf057..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1000 zcmV>P)!zfbCF9L7H_4zL&&ueM3$$0P}zj0qFLGmry^(S)SBkoY&S zoI#eeIkVis#X>rgSdSCw)rIk#U~*0zh%RCo*y+fh4P`sFP^yWUvJG4*V&-?4! zrxhBFhQnKE3=VC-;w?=EsMTtys*0+rWV2Z$N%97-R4Pc4L^7Eqkw~z&w}-!ZQ}^8Bd%HAj>l4a+zAKMlP2N44z7*C>Dzpi$zkYRKUySa@1-y%H?uk z|09J$p>cI}MY&uil}eFJCfV89;o;!{Ns@Scd}M!rpS86$R##Wq+S+0?8nLml!SeDl z2L}g4A`t{ZU}a^6ySqC!H#gnGi$+9<%ibB0!$1n^4EX$(VY?8@j$Ye4!n@uds0>Cf~>h(H` zqM#@WrfD)53;yrkdn)9?3Z(`{au05id}h~6GNFQtH)M0*u@ zUP=Mp3lOINHr=M%uXx@XoqQgr+r_dR3WeYz9Kb1+aE_00Y&+=X^MN+eLZ2o|CD`2s zO{3Kork5PN{_x=yU>~&A3R-`O+o4?+1COD)4yUI6c4GZ;y7 zXF5Lpb{lSQUGTl|2j^k|QH%g!^EdaxpJZ^KX}3WX1vE_q+lKGopTWj(2&PFz&}g^e z^mG?6fCk;J!Q~}nGCBZ1e(W+D8RYW~z!;aGj%~wA$fR+{pkXr8KePq4QPrn} z0+_8^!aLd)>iS}L`~5)Yl;V`S1e5;}fDnQxijdNWrfKRO*1~)aLV$C~rn%N;SrFjEYhV_d1w~Py zwZ7bZyaWwJQ>4KJ)0|zV?0E6j04Pg5tQVh#CIzbyg zJ{(a~)6p?!4nRrSdo0ia3ec3?4|GQyO%HuDfWaX8*LnqzeR2gXuK*lJEZ3d!R{$1^ z!@U7W0Szn}`vU#}>L5UH7VPi#RH~wp{x-Ya&Igz!l=l}~|M)r3r>RBjj_2oJqlrIF z7fb-bB2-S1oL>ivYA&Cw!`ro;vqqFS00000NkvXXu0mjf-Voby diff --git a/test/paint-with-alpha-svg-argb32-ref.png b/test/paint-with-alpha-svg-ref.png similarity index 100% rename from test/paint-with-alpha-svg-argb32-ref.png rename to test/paint-with-alpha-svg-ref.png diff --git a/test/paint-with-alpha-svg-rgb24-ref.png b/test/paint-with-alpha-svg-rgb24-ref.png deleted file mode 100644 index 97a2100e43a3d617f3af64935519f485d7d7695c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 516 zcmV+f0{i`mP)2xUc4kLAi{tnk18cL{44Ln4cLu$Ga7_Rc zz-+Zz{oh?6#{#t0xUP#30)QxrT1QbpnqKzfcH7g{N>Ta#?EtRpqLf0)HZ%;w)^RvM zS;Bq~b*=iLjVAvs03ifY$_s$jy31f;J_pBvra|WUFIrocqW~XX1GBMN5JeGT z7+(H-yk{H1geLDy1PO832E0V z>UOaoFZywL*SVcDcIy;tKig+@h5JW2(-D>qP61&BHHRGW>le2B72o~xr&dos>SVYD zqakAwLfWTc1_O#f&j0(&W&iBzwbg-|;j(|`?d!LNSq-A=ZZJzM*?y} Jvd$@?2>_5AR0#k8 literal 0 HcmV?d00001 diff --git a/test/pixman-rotate-svg-rgb24-ref.png b/test/pixman-rotate-svg-rgb24-ref.png new file mode 100644 index 0000000000000000000000000000000000000000..349fd5ce80ea248a99022891009e45d94bdf5fb9 GIT binary patch literal 358 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGoEX7WqAsj$Z!;#X#z`!W$>Eakt zG3V`_gPeyP1RO4QMogDoBFVjRW=TSF)z>Gg6U9I5ufEZE-r2BR0prCw- zYeY$Kep*R+Vo@rCYjA*qdq#e7NpW&fWB!`T?|;!FKD|7~8M zZtip4*SVgTbDrlpARq_=TiC*%0=d}+w(xJ`-A%Iq z#Dsb4{s|xf09jdCEiEmZ?ZgxYS7T#ip`oFV9zBYTjQsKAhcPEADr#V0V3Q2~mxzmt z>+0&-Y!`omZH0w}TCFx9Ai&AVX|v7z27{~n_wR4tzMaeEMn^}xxw&C57y~CfJUk#E zz&P`dA|xavFfh>0&Tg}fY#26TvDn$!8I4ApUz?hm5(otI^YidH0RY5ev0N@E5{dKk z^L>4NhYuficX#jX?3|dGU@#as9L`*1dV0FOyuz@*s;T+GKa%SPEM|RfDvF7TsjjY8DwXHYpO1`;w8%s%6pG^F;(Pb*ncp%pG7^D6?A*DN z#bP~u`V;^Flhf1FpFe;8_3PK*;NaW0Z};~0HZ?URCMKFIC=`lAhYmS8IS~kigoK38 zpFaZtE?v5G>((tQmD<|cnv|3TL6AX~$K#EUj~5me8eAz9ikX?2nVFgI-@nh#&ztC1 zR8%Mw3X`NnA~|v5#FZ;ouvlztZ0yR)3Y_Qhcq|s{$dMxq1|uaUB_$<=Kp>nwdzQ!J zRaI4)hzt!4F`3Myq$Cc96A=+HH#cWZnaAU0W@g63#H6OCvf1p`)>dof7UARLL#NYU zzI-`0HfD`uz`(!&old`c^{R`DOH@>pPNy3j9OUtMX=!P>xw*^B%UCS-;lqa(Ygb{O zI(14Y6z1jS;c&Q^m>76l`Q*uyyu7@mq$Dbpnw*>rH`W3Zf*>}Vos*LTnc?Hdk8se@ z(GeON3dd|Vo55hfaZpfDNl6I=K`NCBfj}%SE}AH`wY3EX25K}K2!gu1yC)|nMIsRz zjh>yIg&;_;*L!$)bar;avazwTaMhPfCrqk(JSy^y=^XAR;^mG#ifk5EnL+Lb8Bg7fv=uBcMi5{t=t;+ z?%n(5&71WwmzI`b19&|C+qZAk)zwTU6M`TTi8M4cR9jn{mX>C*&>C}kdK!U1$Ye5@ z=I!m>+S&?15QRdiudjz7NUzu1+S-c6Vv9^0<4M}o)KpVb0{}R7?AXbZCp$Yk^Yilw z1cFkjoSB(1erVvp(a{l(9UUDZ2wGfRY-?*XRyc6r0Fg)}kw}S&i5VFg1OkE2=c7=l z?CfkR?c6N4rK7VjcN8tU0q$5 zFJE3Z=zqhxy$6~Pn0GUj-&Ndq>007>; zeLFut&tNc$ii##DCwqH)Gcz-lO6Aztn3tCq0D#3}rKhKdg@vtC-y)oxoD4_E4GY0{4yjbCR;$;qY+n8c?FtMGH2$eps}TqU zJb2HZJyWSv8!ER33WY)-5E>gBQ&Lh!Mn?Mk`y(PE*3Y!5t*w3i`ZWYWG#ZV`WE$A< z@$q-=+(}MO-m_=V(9qD-)D(xqq0wkCIXXIebaZrhc(|;r%-`R?tgH+Gkd>8HSy^d( zs79mF`T6-Gkw~Z0iA17;f&v18P+3{YWHOVJlZS_gZEbDC!or%GnqXNR4p&f6001z! z(r7dSfdF3n%gf8x?2hp8a2k!~>+4G-5l7!U-B#bO5s2Ul0uKlZn>vLca4kVvGr zx3}SyxU{q+kw{!!UDrIg{u!iFDGG)1@bLH>5v^7$l}c@FY>b_+U)f^$-(!4y9En6) zJgEN-v|6o1A|Vh6CLc=HWUe-Wwy=dY@o)SWwuS#&Y)zmo{1yHOVhFwQX diff --git a/test/select-font-face-ps-argb32-ref.png b/test/select-font-face-ps-argb32-ref.png index 66980c90b46d20d11892d2042b4fc86c4abc2232..d8d84a5e2fdd231c66fe60e525b37cfafce3798d 100644 GIT binary patch delta 1232 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 DU0dJ! delta 2446 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 MNe4wvM6N<$g2V01TL1t6 diff --git a/test/select-font-face-svg-argb32-ref.png b/test/select-font-face-svg-argb32-ref.png deleted file mode 100644 index 50b8f496391c4bc0e489e3d77236dca5be742bf5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3064 zcmWlb2{=^!7sn?dk$s64JE3gpC41HwTZ312hRMz-GO{$hjqtaVEyQ5*%GeoWtB^hW z_NENk86zf3_W#d)o_p_e?{m++_jkVE^EoH>k?BKb#%qia2!z?tK-V0cKZBi(fgT(m z%==4#6K#ODp(O*@!Wa-S5C~JHp{|ytM|%mk zEkdGoq9$BhGz6(P!tdF+8HNiy4dQ)AVuEf@1Pl2V)k*%78G@Ujr@<2@3Kesnee!g8 z?BH)>O}o5*>E{>e!tuQllTT`BN^bUkxTgDHb~b7mZ_FUX3&)(n^jkeHh{SIR9}KZV zS{;)dD+K~)JnoH-j#6p3PE<$8yQ_gsSEUyk6&MAjr4s^H23tL((Q&gcj}n&pGjkk5 z_h(RsMn)n+LXk-thdubs_9&*7gXNqdi}_D)hcwS}rR@kU9(+SLnIfW?uFfwl?H1M_ zOLrv+4A~)D#nSC;Z6)s9StPZFW*LirC@UM79?DjT4nNvcM`oYdX2?33K7KqEm$Ch$ zdf4NhwT;cl)RYpU$gaT;W@V*sX2#mq)@Gc0pFQIBYkDs)FMky3p?DhBsw`U*t&w)i z>^&YIzr5@wEG!(nhRb}tQ*Ko@;&BfIq|D7Zpmo|u6{G(_&7|)o*2>Q?7aLn z+vf+7T~$>T!pO+TtNBuGX=&--2`>mC_- z+VkXV|yr6ri7qbUldbb5L!DlT65NCK>Wak}37O-4qI z$B6Jwi2CCSd-%~F<-W4A`p8POz{?nI?1Q3_Dz|}amQvg>7))1RpXQN+gNdJ?j7nZ& zRh8WQ!a_b~MI13Alj*V}%-#&(`0?`)7 zOD!BcG zq+~2mFko-PhWh(=GOQd9QJaT4Hr|wa;{2?BQWZZQbUVSk9J{z3=}`Pp4*O8NlJ#H`95V z=y!Ph9jkI%JzLvro12?DU1+W-Z7mNE36;D}*^)NRvttFLOc^m{Wxje_6Bid@2oOj} zNhx!6)dN^mF54KC5z9@L9n1X2#zqM)#&t5;(9~31O6q^RuWS5{WW+c$EYuc*`yWbNET#l@l<6v|~r#&xG{44bfshz^i721^V( zsM$H{Nf8lNQL&XmekYjF($hnirkv0Y#W>t$Aq@BpZJEqCRn(^1B+}o%s;9p{txr!+ zPn$uA;5Q=$%CVR%CMM=GT5RYRWJmB}*Ji*@k@f!mJAIhEOT!k@>c}9Z3$C&U@|9mu ziyuj)>r65U={h;(6JPv(|8IFYw^7C&_Wba@Yy^3JUYK7aOajAJSXycbDg5vOTC=;g z#m3FeowR#hKtR^q!a@&)+IJ;4H#O<%=)3|LX$NlLy+SX9VUw4a7gkob@!B6ynvDTS z0JnhIIpcVwIVcp0SxX7_KZ0+L0Tg=JAEaLd1J;ODa35q)Qc?m>0$-+(*uA~IpPn2( zulAmjsrH*`DmkoeXt>(oH^afl$0w|z;kdKAdzp!e34S*l1I2ML@!UzCey52hZSY;3 zU!N!g8ChRn$7o~Ov>8Um#zgd!_@!SSEL|<7lvRF|O5|6Ux^t>VgZf1>v9aNUkf$nd zNl3&1utAM1yuHZi`7 zQE%(w>WU+Gc6OdyJu8csgsVk}F#m?Sd4WQy+o@#fU=U6fB1jK+6pqZmk zqz|421f*?-u8rcjxVe9>ulKdQ_#KmwAf~8jMcu|9Z*{Qxd?yUxkp-FwadB~gxg4yl ztW8Z#U#)T@ExW&c;{#yK&CMkSuBBS$r>95RmeUI=D5QZElnw%{gocJf5O?_q1Oj00 z=c~hSE3gpMf@at*4h)EQQL>ix(Qt*IaFc>-4t}Buc zw6rcnvkEMCC0w_*wWZFWW|>uBd_7vxQaWeO!M|GfA)?iBS7pW3)N<$NT?ok8!Az%@ zy*Q)Hs``2{QBh2uDhj&yF!9C*2%bI-yE{;lEdc=mPYz!nAKh{*PA)D?=g*F4<$&cY5GW1+oL6B19QHP6 z`ak?#mZkRMZhd|I`1p8%c`3jburpkaS3*i^9t=9?3AlKPrNB~3IqZ*IUS1x;&5gQN zlF!lvE4S)b{nhfSvQif4hH!Tm$?Ugjd?u!Ovcm~_EiD}#%+?m_Z#2F>>(o{`taL_fQ#qswNP&b>ZE+cXbU7 z3jnpaH)by9%|Y|!jaEl9Fc7&9y?gSrJ!)h2(^+f~XuTq`vaEn0NTe+AM91g>Dho_v zWsfV}y5jkWjg0_<5;8LU85EF**u=zTKsmte*z*A){4fyV!aL>#Ld(m`@2jYQapZI_ zL9OrACDviD`uOWge#uCHH>7>j5}(L=rfJ|U$gFgZzSDr{dGnQyb0)&o0o?R zyIN3LnKU_Rg)cA1oecWRXB*cM2rk~<{lupWr?A!}*SXfJ+S-n`wx4I}BnX)5j`n{U zb#HgzKv+fwkG;Kp6@fs{OM;w_$WmtqXEX_N?PQ-nw|MP#(b^sUv diff --git a/test/select-font-face-svg-ref.png b/test/select-font-face-svg-ref.png new file mode 100644 index 0000000000000000000000000000000000000000..e2e93b5831249c675716576b13b0a3d9ca963ba2 GIT binary patch literal 2430 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 literal 0 HcmV?d00001 diff --git a/test/select-font-face-svg-rgb24-ref.png b/test/select-font-face-svg-rgb24-ref.png deleted file mode 100644 index 50b8f496391c4bc0e489e3d77236dca5be742bf5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3064 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 diff --git a/test/show-text-current-point-pdf-argb32-ref.png b/test/show-text-current-point-pdf-argb32-ref.png deleted file mode 100644 index 61b0dfaffdacdf1f7bb792a6187ba41554ff8a42..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2157 zcmV-z2$J`SP)XL_t(&f$f@YNK@|{$8U8+%Pq5M(=;Dv7BkeeaBCp4UPxh+E#H_K_M$?_ z4YWXnQ6?!`LS;r;w3?=98a_00K9CPgDnZR81k=q5O-bj&6wZqCe{ugiod3?*y}7jC z?+^RDx^|!Yy6*3FUFY`PXU+x3ap1&>6B4ffv;Zeg{&hIAE53gHieVVlwh4w|)6>(- z%gYWdx>3G-`C>Mk|81e1AlT5ow57NL05UQ%IyyRtq3-VP^z?Luk4Pl?@Zkg1M)T&) zn|=HCoj!fKwYBvR1Y1R=Qq9lL6CaNpIWj&zzA2G6F%%gK!GFPVi`XnZHt!|GLXK&$ z>V@MtpU+pT)%b5}YHGs6!*S~b1_r)=|DI~2NlQyBDJijMrepZ|`H_`yx!lpw(M^fG ziJ{0?2>uI>Tf}DR85kH?US4)=A;&aW^RjV*`uX!`Sy`D>Dm{DlY;SKbVy4Mtx^d%% zL?XF(@#3dXpDeCEeE3kO)3vv^D-?>^*;%DhIW#mRm&?=A(h$B%rE++9I4dhlCX=ZwC1MQ-sqRGigv|y?*yeaQiH2?sP zh*f^<{KOw6bJ+g zg`%ykZDnPJ%jL$z#MIT*y?*@~;mhT61p+~HbF)gNa(8!^N~M*Rl^TsEG&EGDQjy~i z4GnpDdELExx2>(sU@$=6xVX5+#>V>kdJc!9(P$7E5sZ(I@7}%p#fum3-n~<+)x*QX zh)`77I-M>wG!)12wY9ZfyLKHqbO^_BqtUp1`*w@Jf>gn@!ctRHGcq!89KU(Vy1F`OBYe4BZbL%@v=b8( zFJHb4?V_ThbLY-k#HXI1nwy)UEtku)v$GKy5%l!*@OV6<(MTSo4Mi*4Y&NsmY`tEu z)oNuj8IQ;N{{4GXQ+9=q zbqH;F?e9A*g*82JWNB#$8b+fLmdJs-g}RUh_7s!aS!)4NZ`;R?9a~>tCti}wX7lv) zH0?~GP-rw7;cMK&!a{9r?THg75Ro^_m(0$cJ7;EQ&~t2NG&?(MGMQK`R$^k}@#Du0 z2E#^Wi^XECRy#L0w}1bBu~^*F(xTVv1p)y8fWzTLMMXtLMe%q%3&GZe<>uykczASo zcZY|ED-;T9rsSAHp%B9`BFN(6A~b@7gW((J{QSHjf{*01Ox~Kg4o#DrlzKxoScoy zj);hW=O_RGhr{vn^Am|gv=3{tU|L}sjpq6D=W4au)z$UUqemSb9rg9~h)kJGWAEBqW4f&%e-d3;p(Y)~;RQ#EE0TT|vBX|G(h;b)b_iBqt|l&z?R1 jw2BSmd{#JdV#$917~p;T3D{yn00000NkvXXu0mjfy&oo) diff --git a/test/show-text-current-point-svg-argb32-ref.png b/test/show-text-current-point-svg-argb32-ref.png deleted file mode 100644 index 717ad7e425712d1026fa2e5b3efd670af2105116..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4236 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 diff --git a/test/show-text-current-point-svg-rgb24-ref.png b/test/show-text-current-point-svg-ref.png similarity index 100% rename from test/show-text-current-point-svg-rgb24-ref.png rename to test/show-text-current-point-svg-ref.png diff --git a/test/text-antialias-gray-pdf-argb32-ref.png b/test/text-antialias-gray-pdf-argb32-ref.png deleted file mode 100644 index adf74a80cdd768572b99ddcf2a0a22b0c7cad265..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 950 zcmV;n14;aeP)hMmKql4i_xJYp78e)0T&}jZw!OVQl}gpu*B1_lCnqNh3JN?PPbOawgwD>+ z#>U3h)>beKv$V97mT7r;xxT(WUw2Uy4-XIb_xE)=-R|zL&*!5kN)Uv6-8qgknM`wY zbLom2fXQS^zm{cLp67Fv866#6TU)EDswylj6a*n04o9O=qtU3gnkLpaih6 zu#kS{a5&oA+cVjsD5g>=g+c*<!>+0&ZwzkH`#ugVB zrP*nkW?43wOlmZm&CSis?#<234Gj%Oqp_^4thBVWrltk}MN#YP>;3)xv$L~mwYsRN zXnTA6;z)IMwcG8sSS;t~=Quhd@i>V@B0SHhQmKm-9UqfeOp5(}|H;Wo&JI(l6wmX1 zzyA_{fnkW8Rf%3t{?n>5xLU6&0R)41^ax#D_`Rnr*lhUzU5cGfyn6=#$s}I9Kvx$Y zJV1u#d0-fF^Csaq^7bv!>By^BxyqQ41cczn57gGmGt*v`5qKNC)LDMKH!KY9Eo+Is5DRDTEZB+oc zaYNeM*%>$v0Pfy}DE|2c5(yj~{k=O)gJn@$3$GW?p5-#8rtt6~Zrwshha@gV!R5l# z6ig4nJa0`JjHqj`?3=>`4_#a0FIlpDrUOGl8i&J?+&vCUE_B!*y_Bt(>9l#{f&|a3#+Mn^ zywY2yu9A+NrCM!iyxQ0G+JsbBbD@~%G?Pm$uNQv}|Jm)gwAA_9-4kigo1X6LW)G++ z(K%`KxgynVL5@T|&&yBi>|S-OjFc`2$7r%{&HF*8_)4F?;_pSTKnERwj_lcbKQlLi|JYD@<);T3K F0RUPKeE9$X diff --git a/test/text-antialias-gray-svg-argb32-ref.png b/test/text-antialias-gray-svg-argb32-ref.png deleted file mode 100644 index aa64fbbec5456e46ddb57013a3db267775b89003..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1077 zcmV-51j_q~P){)8)eiP=ALJ9?T*8Y*2D9FU-&J~ z`JVgxo;U8j0J6QkE#c77(ILgf#bLR>#mdTx0AV=;XNV{OMNw#KYU1$lkg~Eeu3o(w zHh6GwkdcuQ+-^5Uqmhb=3L+yTb$)hsmfqf8*4Nj`%gdv(vNGh3{r!DfT3RS7D#8Fz zRaHfDaxw`C37AYKrlzLCinq77lb)WA(P*T-y&a3iqH{exJroueVlWuU&(CLke4PFL z{h;R+MZsh;v9+~Dc6K%Z($&?a&!MiaPRh&6|2T8E+bz-2(c<-bMMNYcBSU(6dQP1A z!oq@NXJ<=WTbs@S$nx^C?&$05lboEKu;Ny$RWdU(B`YgSj7FnGMn=l&>Z)vPYzQEm zo0}(!r=+9=3F`}YaB!fv#^dpjkdP44@_~T?Iy*a=oSbBSex9+hF#uFmB|bhLgTa8u z;|V)10IStXV`C#rOG~=X0MOmtt@U4ouC6W$3JO9Vb~>G;rlyjVlmtLWM+bhtAAs1{ zSPBXXXl-rP}_4SxcCg$emfTL}nnVF%aq=cQF9d>tjX>M)~5ic$- z#%i@a5#cy?Q}ZD<#Gv^FN?U{VHa9HeG+;4G(7izz_7Ro$3_!`y*+Tb zPTZmY3>VxT)(b~Z*D?$HN1Ltx_A`8qeoCvqd8(?;Kd7g_wLV` zAIJ0OaPJC|ku z8|?M~f9H;78;yaJn|pH0;i&TNZus_1Ta?k!z!DutObk4J3`Ip+bzi?iYHEOQXn+R~ z;O1ob+WE~7 v55wZ3)~Q>!;KGGd#6`64>RI4S|Ka`t^2;_OSJ$1000000NkvXXu0mjf*{c7q diff --git a/test/text-antialias-gray-svg-rgb24-ref.png b/test/text-antialias-gray-svg-rgb24-ref.png deleted file mode 100644 index 20f0d5806fb90982b0185f02f5c0a770be56c7e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1033 zcmV+k1or!hP)H@P&yDAC{CPI1eKz(#E4Qwy<#CoWA++}XM1t}0ae~1h@pzoNx;on1+b?OvVlf5= z2B@vAO*Zf8>7l>BADvD|M@I+ocpR6@b*XS^X^Ez$CQK$1e!riFh6d*6=h5kOxZQ3- zp%A^jz3BCN=H})u)$i}`)7;!ld3ib2)zx6NTE*w{rRFd;HYQb7RjTtkK0cQ9^>qn_ zLSnI4WN~p(R#sLdH#b+dx3^Vi9tZ@aq@+ZKhK5q{EC8p|ncAJx>11_vHRG}O_4P3^ zF@eoyL#NYmaBx5*65-_JgrcG%^7Hdm=iAoShTH9?v$Hc5%L3Tj+e-x$MIkRQ?^5yd z@-m~NqpYp1VK5i~uvjd_<8h2eBZ{IRB4{+4jLnCKhw*qkR905f($WHe7QpB8kw_#E z5k^KvXl!h}RD5`Nh(@D9t4;nO)6>&zZf*ilR#rxKb~ZkrFU8;4*||_(T3X7?%naS# z-AqnSrr+FXG~#eLI6XbZWHRCPdM`DvsHmW(rUskMhS_Y!YPC{aTns=?P7YI3Q?$0W zGB`MhUa!YsFfcnidqKl)w-XEosjsgm8jYe65rO2F7>!0LEG*1;Z0Fe6*g&h*s`9qB zwn!urSS*$+bpSNsu*luJke!{Gu)Ypg<^KlSM~~pg4|T$I`M+xZ-^l)p=8*`zcmYqJ z!lzH_WRC|FCB63h;meowS_FJPc=imQKZgt^cM(>rh{GW=JuTw*ixd`$eEj&QJBged z9EgO&>DuOc5lh?vbH-@mKhc3A+gU&HxbvbP6=gOI`6uf)%v z@cupg`UPhmL?i<5-ofZ-=9)8mO$VG#P;u8Qv9tuo$MEoBI`;cFJb0j9b7rsUfTBPK zcLhMNheRU1J~~QsZ{LPHcOVqH`G(KzH7P0rBO{Q(T>-G$;oG<5^X4Xe{+!O0l_fX# zhr@DoboD7}0gOg)IFjNU8}Q~$X7by&@ak1^G*6yDWo0^-lLJ#zFgy(R?hMmKql4i_xJYp78e)0T&}jZw!OVQl}gpu*B1_lCnqNh3JN?PPbOawgwD>+ z#>U3h)>beKv$V97mT7r;xxT(WUw2Uy4-XIb_xE)=-R|zL&*!5kN)Uv6-8qgknM`wY zbLom2fXQS^zm{cLp67Fv866#6TU)EDswylj6a*n04o9O=qtU3gnkLpaih6 zu#kS{a5&oA+cVjsD5g>=g+c*<!>+0&ZwzkH`#ugVB zrP*nkW?43wOlmZm&CSis?#<234Gj%Oqp_^4thBVWrltk}MN#YP>;3)xv$L~mwYsRN zXnTA6;z)IMwcG8sSS;t~=Quhd@i>V@B0SHhQmKm-9UqfeOp5(}|H;Wo&JI(l6wmX1 zzyA_{fnkW8Rf%3t{?n>5xLU6&0R)41^ax#D_`Rnr*lhUzU5cGfyn6=#$s}I9Kvx$Y zJV1u#d0-fF^Csaq^7bv!>By^BxyqQ41cczn57gGmGt*v`5qKNC)LDMKH!KY9Eo+Is5DRDTEZB+oc zaYNeM*%>$v0Pfy}DE|2c5(yj~{k=O)gJn@$3$GW?p5-#8rtt6~Zrwshha@gV!R5l# z6ig4nJa0`JjHqj`?3=>`4_#a0FIlpDrUOGl8i&J?+&vCUE_B!*y_Bt(>9l#{f&|a3#+Mn^ zywY2yu9A+NrCM!iyxQ0G+JsbBbD@~%G?Pm$uNQv}|Jm)gwAA_9-4kigo1X6LW)G++ z(K%`KxgynVL5@T|&&yBi>|S-OjFc`2$7r%{&HF*8_)4F?;_pSTKnERwj_lcbKQlLi|JYD@<);T3K F0RUPKeE9$X diff --git a/test/text-antialias-none-svg-argb32-ref.png b/test/text-antialias-none-svg-argb32-ref.png deleted file mode 100644 index aa64fbbec5456e46ddb57013a3db267775b89003..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1077 zcmV-51j_q~P){)8)eiP=ALJ9?T*8Y*2D9FU-&J~ z`JVgxo;U8j0J6QkE#c77(ILgf#bLR>#mdTx0AV=;XNV{OMNw#KYU1$lkg~Eeu3o(w zHh6GwkdcuQ+-^5Uqmhb=3L+yTb$)hsmfqf8*4Nj`%gdv(vNGh3{r!DfT3RS7D#8Fz zRaHfDaxw`C37AYKrlzLCinq77lb)WA(P*T-y&a3iqH{exJroueVlWuU&(CLke4PFL z{h;R+MZsh;v9+~Dc6K%Z($&?a&!MiaPRh&6|2T8E+bz-2(c<-bMMNYcBSU(6dQP1A z!oq@NXJ<=WTbs@S$nx^C?&$05lboEKu;Ny$RWdU(B`YgSj7FnGMn=l&>Z)vPYzQEm zo0}(!r=+9=3F`}YaB!fv#^dpjkdP44@_~T?Iy*a=oSbBSex9+hF#uFmB|bhLgTa8u z;|V)10IStXV`C#rOG~=X0MOmtt@U4ouC6W$3JO9Vb~>G;rlyjVlmtLWM+bhtAAs1{ zSPBXXXl-rP}_4SxcCg$emfTL}nnVF%aq=cQF9d>tjX>M)~5ic$- z#%i@a5#cy?Q}ZD<#Gv^FN?U{VHa9HeG+;4G(7izz_7Ro$3_!`y*+Tb zPTZmY3>VxT)(b~Z*D?$HN1Ltx_A`8qeoCvqd8(?;Kd7g_wLV` zAIJ0OaPJC|ku z8|?M~f9H;78;yaJn|pH0;i&TNZus_1Ta?k!z!DutObk4J3`Ip+bzi?iYHEOQXn+R~ z;O1ob+WE~7 v55wZ3)~Q>!;KGGd#6`64>RI4S|Ka`t^2;_OSJ$1000000NkvXXu0mjf*{c7q diff --git a/test/text-antialias-none-svg-rgb24-ref.png b/test/text-antialias-none-svg-rgb24-ref.png deleted file mode 100644 index 20f0d5806fb90982b0185f02f5c0a770be56c7e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1033 zcmV+k1or!hP)H@P&yDAC{CPI1eKz(#E4Qwy<#CoWA++}XM1t}0ae~1h@pzoNx;on1+b?OvVlf5= z2B@vAO*Zf8>7l>BADvD|M@I+ocpR6@b*XS^X^Ez$CQK$1e!riFh6d*6=h5kOxZQ3- zp%A^jz3BCN=H})u)$i}`)7;!ld3ib2)zx6NTE*w{rRFd;HYQb7RjTtkK0cQ9^>qn_ zLSnI4WN~p(R#sLdH#b+dx3^Vi9tZ@aq@+ZKhK5q{EC8p|ncAJx>11_vHRG}O_4P3^ zF@eoyL#NYmaBx5*65-_JgrcG%^7Hdm=iAoShTH9?v$Hc5%L3Tj+e-x$MIkRQ?^5yd z@-m~NqpYp1VK5i~uvjd_<8h2eBZ{IRB4{+4jLnCKhw*qkR905f($WHe7QpB8kw_#E z5k^KvXl!h}RD5`Nh(@D9t4;nO)6>&zZf*ilR#rxKb~ZkrFU8;4*||_(T3X7?%naS# z-AqnSrr+FXG~#eLI6XbZWHRCPdM`DvsHmW(rUskMhS_Y!YPC{aTns=?P7YI3Q?$0W zGB`MhUa!YsFfcnidqKl)w-XEosjsgm8jYe65rO2F7>!0LEG*1;Z0Fe6*g&h*s`9qB zwn!urSS*$+bpSNsu*luJke!{Gu)Ypg<^KlSM~~pg4|T$I`M+xZ-^l)p=8*`zcmYqJ z!lzH_WRC|FCB63h;meowS_FJPc=imQKZgt^cM(>rh{GW=JuTw*ixd`$eEj&QJBged z9EgO&>DuOc5lh?vbH-@mKhc3A+gU&HxbvbP6=gOI`6uf)%v z@cupg`UPhmL?i<5-ofZ-=9)8mO$VG#P;u8Qv9tuo$MEoBI`;cFJb0j9b7rsUfTBPK zcLhMNheRU1J~~QsZ{LPHcOVqH`G(KzH7P0rBO{Q(T>-G$;oG<5^X4Xe{+!O0l_fX# zhr@DoboD7}0gOg)IFjNU8}Q~$X7by&@ak1^G*6yDWo0^-lLJ#zFgy(R?hMmKql4i_xJYp78e)0T&}jZw!OVQl}gpu*B1_lCnqNh3JN?PPbOawgwD>+ z#>U3h)>beKv$V97mT7r;xxT(WUw2Uy4-XIb_xE)=-R|zL&*!5kN)Uv6-8qgknM`wY zbLom2fXQS^zm{cLp67Fv866#6TU)EDswylj6a*n04o9O=qtU3gnkLpaih6 zu#kS{a5&oA+cVjsD5g>=g+c*<!>+0&ZwzkH`#ugVB zrP*nkW?43wOlmZm&CSis?#<234Gj%Oqp_^4thBVWrltk}MN#YP>;3)xv$L~mwYsRN zXnTA6;z)IMwcG8sSS;t~=Quhd@i>V@B0SHhQmKm-9UqfeOp5(}|H;Wo&JI(l6wmX1 zzyA_{fnkW8Rf%3t{?n>5xLU6&0R)41^ax#D_`Rnr*lhUzU5cGfyn6=#$s}I9Kvx$Y zJV1u#d0-fF^Csaq^7bv!>By^BxyqQ41cczn57gGmGt*v`5qKNC)LDMKH!KY9Eo+Is5DRDTEZB+oc zaYNeM*%>$v0Pfy}DE|2c5(yj~{k=O)gJn@$3$GW?p5-#8rtt6~Zrwshha@gV!R5l# z6ig4nJa0`JjHqj`?3=>`4_#a0FIlpDrUOGl8i&J?+&vCUE_B!*y_Bt(>9l#{f&|a3#+Mn^ zywY2yu9A+NrCM!iyxQ0G+JsbBbD@~%G?Pm$uNQv}|Jm)gwAA_9-4kigo1X6LW)G++ z(K%`KxgynVL5@T|&&yBi>|S-OjFc`2$7r%{&HF*8_)4F?;_pSTKnERwj_lcbKQlLi|JYD@<);T3K F0RUPKeE9$X diff --git a/test/text-antialias-subpixel-svg-argb32-ref.png b/test/text-antialias-subpixel-svg-argb32-ref.png deleted file mode 100644 index aa64fbbec5456e46ddb57013a3db267775b89003..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1077 zcmV-51j_q~P){)8)eiP=ALJ9?T*8Y*2D9FU-&J~ z`JVgxo;U8j0J6QkE#c77(ILgf#bLR>#mdTx0AV=;XNV{OMNw#KYU1$lkg~Eeu3o(w zHh6GwkdcuQ+-^5Uqmhb=3L+yTb$)hsmfqf8*4Nj`%gdv(vNGh3{r!DfT3RS7D#8Fz zRaHfDaxw`C37AYKrlzLCinq77lb)WA(P*T-y&a3iqH{exJroueVlWuU&(CLke4PFL z{h;R+MZsh;v9+~Dc6K%Z($&?a&!MiaPRh&6|2T8E+bz-2(c<-bMMNYcBSU(6dQP1A z!oq@NXJ<=WTbs@S$nx^C?&$05lboEKu;Ny$RWdU(B`YgSj7FnGMn=l&>Z)vPYzQEm zo0}(!r=+9=3F`}YaB!fv#^dpjkdP44@_~T?Iy*a=oSbBSex9+hF#uFmB|bhLgTa8u z;|V)10IStXV`C#rOG~=X0MOmtt@U4ouC6W$3JO9Vb~>G;rlyjVlmtLWM+bhtAAs1{ zSPBXXXl-rP}_4SxcCg$emfTL}nnVF%aq=cQF9d>tjX>M)~5ic$- z#%i@a5#cy?Q}ZD<#Gv^FN?U{VHa9HeG+;4G(7izz_7Ro$3_!`y*+Tb zPTZmY3>VxT)(b~Z*D?$HN1Ltx_A`8qeoCvqd8(?;Kd7g_wLV` zAIJ0OaPJC|ku z8|?M~f9H;78;yaJn|pH0;i&TNZus_1Ta?k!z!DutObk4J3`Ip+bzi?iYHEOQXn+R~ z;O1ob+WE~7 v55wZ3)~Q>!;KGGd#6`64>RI4S|Ka`t^2;_OSJ$1000000NkvXXu0mjf*{c7q diff --git a/test/text-antialias-subpixel-svg-rgb24-ref.png b/test/text-antialias-subpixel-svg-rgb24-ref.png deleted file mode 100644 index 20f0d5806fb90982b0185f02f5c0a770be56c7e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1033 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 b!#(($R*_r*A>elQoMYHjPQcw&wMIuUt z77$WsOKF`#DF#Y5-BN*QV*{umV~7Z)AhxlK%@!z1O}5qDSU|KffM`sN3W-!Cp-D{y z#id`50Lr=cKQt z-`A7zNsiw_6Or&|luqoyR6) zoEf_W>ga0{q<_og{Wur+^JI(@O2BlhKrP?{Uuwur+Bh>-1+v652?lmbo`$27HO`DZ z5cw{fjsoqIJCrqd^UY^01^zowVm4s|BE;P*v4%M zi))FK^=)*%VHgi0O}T=x<}_{oms&zbFMJO?r;PQ~7)(*QH6nKHRp2 z&GQA^M;EE)9ImA(psZvoe>`R<%QA@7CSJxr9Ll(W{1N7Cer*l>eHy7v!c!DoA z7<`YQrwe+_;8wlDxh*T{IV($|rD6oU!>lzHcX1H9?fbcUSD`CE=gL9gK=6#QU9??P z3V+ykZvRV)uB$)H;ok{*zQL^rz8pqCvDE-(M6I;Hmh9r2d8~K1{U&xF8l8k}o59Z& zlo&3xlI{c04Zv#lW-6A#!J0?Vm-e%K4EX=V_OjX;^r;}>E-Y@ZWuSn7;s_Wj^mTh7 z_+qo@4Z-BSkOx23%Bnz$uJ{S`f}n$*_kRL3OtrGTMh}@EqXX?{0zw^!Nmgq50!eSY$>crgXA|O2n?JG_>Fvjq2QhtG=DDW zVT=C6;0_A(2|g3U0eXqx?-JCOCtz%uQ5XR=~9U~m|uui$snsSsds zX_E*4f+Kdt!zBuzyZP2x;j?@a!355i1XppxCg`yOOsyr~DYpdnv+Qj_{}KE?e?rIu zGwA1n?{3`kuWkg)<8EPrR$(A_KO(IBGFDCt8b6%gFB`3UgWUC)!V%frrF znzRU7Cxl;6(xhVn0V?R;Sbp1Z|oK0r8^0*AzrRZH3enLw`Glmq48C zJ>%NLBOve8kGcNfT7Gn=LAMIJ>|K(ttfO;>!M$9A7lZql#V;}pt$LH%(+Emoi~i7{ z-xTz!uk-D0L3hV+|1{_sucEhF^a6waM$m<&2^c_-2}DPETf(!yI>2R*8uVsCH$TtC zA2;M4vzUKba%WHIK;%hocz^Il9`6U;V$r#RJ~S$8Bl0%Xh#C2)f&P02h<{elO9fpa z=n6(9Pz8Ul;17loQ0_n^#t`5qL;%2S`Zm1F`<$R{f-V*OQo&&;vl%Kr5ZTR59qV{> zpTS)#aG^m@Gw2DyziH9m3);PfJB|;(pC+A6(RIZIpcl27x;Az=Nl`TQe-PYL=-!6gNM z#4M+$lWP&ma7A*!J_{V2?rnD4NkXjQ)1EGV59<(3REtI|DSEf z-VIKbMJf=fK$HZdB`y%DK%@du5{ydWNChGlhz>-e2#8dm8dc!mcQrk6+8^`|00000 LNkvXXu0mjfu^mWC delta 1676 zcmV;726Oq<4Xh22G=F1BL_t(|ob8%zjFi1)6 znwBUH)`A-at#nfgbXyv##j+)kp+P|eOwh_p7rVxS&6e2JO@juj+ZSTe4=qWp4XIj- ziH4v7c6o7ko_lUT%rndE&hyMHMwYGfoMb*s&YgSC`OmrM|9_wR44_^Je2M{I%?G}g zlfI7QK26{EsQ^m}O4Q4u=Q_7hF^K~}DjfhS1c2BhU~uO;w^6ZJ0OVX}HcD0k0DrD? z8x>1fAYp;n;wyd#R(J;_ERe83g&%=L3MVX386A+Yz*ruF_p#wNL92kjJtzoLwU21?Vq%`asAXBeuD4zeS~!k+GdtCr3f0*96xjqPo0Qbvx~Wn zH4L2B&p_{pS)iHD>Z3HYSo{KqUMn~el<^$V+3enL(SP3_rfEYV81w0vYVfxU!8e3o zUJ1U+1GSvuhirb$qU{qn`e=qsB!H{P^az@^=(?4x*+_IPTsBV&Q-yxe$BSp#Kfm zUTe^`O@AD&FHF+lR|{^r;I9_+xS$6F_ip%^s|>oSm-_AunN$=2f?gx&RB%lZzRw!m zR3W$|OKOinGlEVM^r)a(nE%t9 zt}Cj^HkFmaM`@UAaW{mCEb8W)I|>uo!_0nQZ}=KwJ6O;fRoE69D#8B% zcz-AkfT)2i_`H9DLGN9}_DAx*AMt2E@CLx;{A;G*ZwSF!dOOc-%deZsp8m2@*ya#M z(7$(c>kd9bv$*HNy)Vv?xg;Kd;tmj8NY{E;;Ia4^eqOl8+plu@_+FhG6^^s1whmhDCmIw3u({B1CYyK(7hQl zMH`i5fqrTl1+58Z!htg_yp>;EEVyk3y+!bY=hj5W8(&;xyeiFifS_-c%0bXih5NrA zRK`#@uSI};Y?gRIpz>yRVkJbymD;F;)I_feASg|V2<$vX| z==)^=s156hl(r?MutAO#yl*@c01R$HzIcQA;wFCb=I}KuSaYc`5OzRh@+D?~kM#}P zP z@>b9T;Y^zn=`Y6uf_pv;bmu&FPJbvFZD@k^Ve7?aC=Y#ToV;&Fm3_IYaHXbZea;sS}SI{}b z;|(pc)DejH6kUt4X^HG+O?B8UF;XRd$Dz}uGK(h*&V?Bwo^^XWJVy56Ff3%cnvtqsy! zc06YALmOE3%5v7W3A$F$&wm;8S5lC)pgjg!1pQBb=EMOI#R7J4uk!a6U+2XKUS>Ku z)v41AI!!`49`S|9lYD1O3s3AexH|-{Gw6i|Jt6paEc#bLf482W4*7|@j<$zZu;vdI zoo{eg3F-t6TJ-n*)IJNO()2CL4LkpjVgUS7gH~Jk%W$8;JuL7PxPSd+5ddza=Yf4p z`;EuX6PPOKc?Rt@x64UUE-ERe83G6a(&kg!0)0?80eq;SFl2@50_B1s1%EKrFo@IR?3 WG6PxxxBvhE002ovP6b4+LSTZN?JS)D diff --git a/test/unantialiased-shapes-ps-argb32-ref.png b/test/unantialiased-shapes-ps-argb32-ref.png deleted file mode 100644 index dc64e36164edc65d3573e8895205ed3890950c65..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4076 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 BjSBz( diff --git a/test/unantialiased-shapes-svg-argb32-ref.png b/test/unantialiased-shapes-svg-argb32-ref.png deleted file mode 100644 index da297735bc10baba100133f0ab936f1854278c1a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19689 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 Wb4fP~eP3_@0000 Date: Wed, 2 Aug 2006 11:18:14 -0400 Subject: [PATCH 15/15] Improve docs for cairo_surface_create_similar() --- src/cairo-surface.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/cairo-surface.c b/src/cairo-surface.c index cad5a33c8..8e24773e4 100644 --- a/src/cairo-surface.c +++ b/src/cairo-surface.c @@ -276,11 +276,12 @@ _cairo_surface_create_similar_scratch (cairo_surface_t *other, * @height: height of the new surface (in device-space units) * * Create a new surface that is as compatible as possible with an - * existing surface. The new surface will use the same backend as - * @other unless that is not possible for some reason. However, the - * created surface will have same fallback resolution and font options - * as the existing surface. The type of the returned surface may be - * examined with cairo_surface_get_type(). + * existing surface. For example the new surface will have the same + * fallback resolution and font options as @other. Generally, the new + * surface will also use the same backend as @other, unless that is + * not possible for some reason. The type of the returned surface may + * be examined with cairo_surface_get_type(). + * * Initially the surface contents are all 0 (transparent if contents * have transparency, black otherwise.) *