diff options
Diffstat (limited to 'testing/cairo/git_fixes.patch')
-rw-r--r-- | testing/cairo/git_fixes.patch | 574 |
1 files changed, 0 insertions, 574 deletions
diff --git a/testing/cairo/git_fixes.patch b/testing/cairo/git_fixes.patch deleted file mode 100644 index 84ee0ba17..000000000 --- a/testing/cairo/git_fixes.patch +++ /dev/null @@ -1,574 +0,0 @@ -From ede11b2954db19e3ca9d31cef7d04a7bf0e42ddc Mon Sep 17 00:00:00 2001 -From: Behdad Esfahbod <behdad@behdad.org> -Date: Sun, 25 Mar 2012 18:37:14 +0000 -Subject: Fix math in comments - ---- -diff --git a/src/cairo-arc.c b/src/cairo-arc.c -index dc07fee..6977e88 100644 ---- a/src/cairo-arc.c -+++ b/src/cairo-arc.c -@@ -139,7 +139,7 @@ _arc_segments_needed (double angle, - - From that paper, a very practical value of h is: - -- h = 4/3 * tan(angle/4) -+ h = 4/3 * R * tan(angle/4) - - This value does not give the spline with minimal error, but it does - provide a very good approximation, (6th-order convergence), and the --- -cgit v0.9.0.2-2-gbebe -From fba21ef2a4c4eb343668267fda713aedbb6af2a4 Mon Sep 17 00:00:00 2001 -From: Henry (Yu) Song <hsong@sisa.samsung.com> -Date: Tue, 27 Mar 2012 21:25:37 +0000 -Subject: gl: use font's antialias option to check whether it needs mask - -There is need to loop over number of glyphs to check wether the glyph -image is a ARGB32 as the font's antialias option can be used for checking. -If antialias is SUBPIXEL or BEST, the glyph surface will be ARGB32, -otherwise it will be A8 format. Therefore we will only be using -component-alpha at SUBPIXEL (or better) font quality and only then need -a mask for multiple pass glyph composition. ---- -diff --git a/src/cairo-gl-glyphs.c b/src/cairo-gl-glyphs.c -index 832956f..9756ea4 100644 ---- a/src/cairo-gl-glyphs.c -+++ b/src/cairo-gl-glyphs.c -@@ -427,23 +427,15 @@ _cairo_gl_composite_glyphs (void *_dst, - - TRACE ((stderr, "%s\n", __FUNCTION__)); - -- /* If any of the glyphs are component alpha, we have to go through a mask, -- * since only _cairo_gl_surface_composite() currently supports component -- * alpha. -+ /* If any of the glyphs require component alpha, we have to go through -+ * a mask, since only _cairo_gl_surface_composite() currently supports -+ * component alpha. - */ -- if (!dst->base.is_clear && ! info->use_mask && op != CAIRO_OPERATOR_OVER) { -- for (i = 0; i < info->num_glyphs; i++) { -- cairo_scaled_glyph_t *scaled_glyph; -- -- if (_cairo_scaled_glyph_lookup (info->font, info->glyphs[i].index, -- CAIRO_SCALED_GLYPH_INFO_SURFACE, -- &scaled_glyph) == CAIRO_INT_STATUS_SUCCESS && -- scaled_glyph->surface->format == CAIRO_FORMAT_ARGB32) -- { -- info->use_mask = TRUE; -- break; -- } -- } -+ if (!dst->base.is_clear && ! info->use_mask && op != CAIRO_OPERATOR_OVER && -+ (info->font->options.antialias == CAIRO_ANTIALIAS_SUBPIXEL || -+ info->font->options.antialias == CAIRO_ANTIALIAS_BEST)) -+ { -+ info->use_mask = TRUE; - } - - if (info->use_mask) { --- -cgit v0.9.0.2-2-gbebe -From d304f0e57be8036719c3709e2419487326369105 Mon Sep 17 00:00:00 2001 -From: Chris Wilson <chris@chris-wilson.co.uk> -Date: Wed, 28 Mar 2012 23:32:36 +0000 -Subject: composite-rectangles: Trim extents for SOURCE and CLEAR to the mask - -The SOURCE and CLEAR are the odd pair in Cairo's range of operators that -are bound by the shape/mask, but are unbound by the source. This -regularly leads to bugs as only track the bound/unbound rectangles and -confuse the meaning when bound only by the mask. - -What is required is that the unbound extents in this case is only -trimmed by the mask (the bounded extents are still the intersection of -all). - -Fixes bug-source-cu - -Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> ---- -diff --git a/src/cairo-composite-rectangles.c b/src/cairo-composite-rectangles.c -index 106571e..8c5cd5a 100644 ---- a/src/cairo-composite-rectangles.c -+++ b/src/cairo-composite-rectangles.c -@@ -147,8 +147,12 @@ _cairo_composite_rectangles_intersect (cairo_composite_rectangles_t *extents, - if (! ret && extents->is_bounded & CAIRO_OPERATOR_BOUND_BY_MASK) - return CAIRO_INT_STATUS_NOTHING_TO_DO; - -- if (extents->is_bounded == (CAIRO_OPERATOR_BOUND_BY_MASK | CAIRO_OPERATOR_BOUND_BY_SOURCE)) -+ if (extents->is_bounded == (CAIRO_OPERATOR_BOUND_BY_MASK | CAIRO_OPERATOR_BOUND_BY_SOURCE)) { - extents->unbounded = extents->bounded; -+ } else if (extents->is_bounded & CAIRO_OPERATOR_BOUND_BY_MASK) { -+ if (!_cairo_rectangle_intersect (&extents->unbounded, &extents->mask)) -+ return CAIRO_INT_STATUS_NOTHING_TO_DO; -+ } - - extents->clip = _cairo_clip_reduce_for_composite (clip, extents); - if (_cairo_clip_is_all_clipped (extents->clip)) -@@ -199,8 +203,12 @@ _cairo_composite_rectangles_intersect_source_extents (cairo_composite_rectangles - rect.height == extents->bounded.height) - return CAIRO_INT_STATUS_SUCCESS; - -- if (extents->is_bounded == (CAIRO_OPERATOR_BOUND_BY_MASK | CAIRO_OPERATOR_BOUND_BY_SOURCE)) -+ if (extents->is_bounded == (CAIRO_OPERATOR_BOUND_BY_MASK | CAIRO_OPERATOR_BOUND_BY_SOURCE)) { - extents->unbounded = extents->bounded; -+ } else if (extents->is_bounded & CAIRO_OPERATOR_BOUND_BY_MASK) { -+ if (!_cairo_rectangle_intersect (&extents->unbounded, &extents->mask)) -+ return CAIRO_INT_STATUS_NOTHING_TO_DO; -+ } - - clip = extents->clip; - extents->clip = _cairo_clip_reduce_for_composite (clip, extents); -@@ -253,8 +261,12 @@ _cairo_composite_rectangles_intersect_mask_extents (cairo_composite_rectangles_t - mask.height == extents->bounded.height) - return CAIRO_INT_STATUS_SUCCESS; - -- if (extents->is_bounded == (CAIRO_OPERATOR_BOUND_BY_MASK | CAIRO_OPERATOR_BOUND_BY_SOURCE)) -+ if (extents->is_bounded == (CAIRO_OPERATOR_BOUND_BY_MASK | CAIRO_OPERATOR_BOUND_BY_SOURCE)) { - extents->unbounded = extents->bounded; -+ } else if (extents->is_bounded & CAIRO_OPERATOR_BOUND_BY_MASK) { -+ if (!_cairo_rectangle_intersect (&extents->unbounded, &extents->mask)) -+ return CAIRO_INT_STATUS_NOTHING_TO_DO; -+ } - - clip = extents->clip; - extents->clip = _cairo_clip_reduce_for_composite (clip, extents); --- -cgit v0.9.0.2-2-gbebe -From af6e084dd78fcbb8ecce46c57f655f5e24343b8c Mon Sep 17 00:00:00 2001 -From: Chris Wilson <chris@chris-wilson.co.uk> -Date: Thu, 29 Mar 2012 13:48:24 +0000 -Subject: cairoint: Mark PDF surface as requiring the deflate stream output - -Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> ---- -diff --git a/src/cairoint.h b/src/cairoint.h -index 9a8003e..9f20d51 100644 ---- a/src/cairoint.h -+++ b/src/cairoint.h -@@ -73,7 +73,10 @@ - #include "cairo-compiler-private.h" - #include "cairo-error-private.h" - --#if CAIRO_HAS_PS_SURFACE || CAIRO_HAS_SCRIPT_SURFACE || CAIRO_HAS_XML_SURFACE -+#if CAIRO_HAS_PDF_SURFACE || \ -+ CAIRO_HAS_PS_SURFACE || \ -+ CAIRO_HAS_SCRIPT_SURFACE || \ -+ CAIRO_HAS_XML_SURFACE - #define CAIRO_HAS_DEFLATE_STREAM 1 - #endif - -@@ -84,7 +87,9 @@ - #define CAIRO_HAS_FONT_SUBSET 1 - #endif - --#if CAIRO_HAS_PS_SURFACE || CAIRO_HAS_PDF_SURFACE || CAIRO_HAS_FONT_SUBSET -+#if CAIRO_HAS_PS_SURFACE || \ -+ CAIRO_HAS_PDF_SURFACE || \ -+ CAIRO_HAS_FONT_SUBSET - #define CAIRO_HAS_PDF_OPERATORS 1 - #endif - --- -cgit v0.9.0.2-2-gbebe -From a965b0f95fdeb567f7ccb51f7c8c47735a61e2d9 Mon Sep 17 00:00:00 2001 -From: Henry (Yu) Song <hsong@sisa.samsung.com> -Date: Thu, 29 Mar 2012 01:08:51 +0000 -Subject: gl: fix y-axis origin when map_to_image() for non texture GL surface - -We need to fix y-axis origin when map a GL surface to image surface for -non-texture GL surface. - -Test cases: extended-blend-alpha-mask, extended-blend-mask. -Although the image outputs is not right, but the image on the first grid -(upper-left corner) is correct comparing to image output. ---- -diff --git a/src/cairo-gl-surface.c b/src/cairo-gl-surface.c -index 8bbf939..32ecf63 100644 ---- a/src/cairo-gl-surface.c -+++ b/src/cairo-gl-surface.c -@@ -985,6 +985,7 @@ _cairo_gl_surface_map_to_image (void *abstract_surface, - unsigned int cpp; - cairo_bool_t invert; - cairo_status_t status; -+ int y; - - /* Want to use a switch statement here but the compiler gets whiny. */ - if (surface->base.content == CAIRO_CONTENT_COLOR_ALPHA) { -@@ -1065,7 +1066,12 @@ _cairo_gl_surface_map_to_image (void *abstract_surface, - glPixelStorei (GL_PACK_ROW_LENGTH, image->stride / cpp); - if (invert) - glPixelStorei (GL_PACK_INVERT_MESA, 1); -- glReadPixels (extents->x, extents->y, -+ -+ y = extents->y; -+ if (! _cairo_gl_surface_is_texture (surface)) -+ y = surface->height - extents->y - extents->height; -+ -+ glReadPixels (extents->x, y, - extents->width, extents->height, - format, type, image->data); - if (invert) --- -cgit v0.9.0.2-2-gbebe -From c77112c5464d7ff21052527f82f4d729cc509291 Mon Sep 17 00:00:00 2001 -From: Uli Schlachter <psychon@znc.in> -Date: Mon, 02 Apr 2012 18:43:00 +0000 -Subject: xcb: Fix SHM in _get_image() - -Commit 2283ab9 introduced a logic error. Instead of falling back to the non-SHM -path when getting the image via SHM failed, we now did the fallback when getting -the image via SHM worked (which means that the SHM operation was a waste of -time). - -Signed-off-by: Uli Schlachter <psychon@znc.in> ---- -diff --git a/src/cairo-xcb-surface.c b/src/cairo-xcb-surface.c -index fff4f52..6bedbda 100644 ---- a/src/cairo-xcb-surface.c -+++ b/src/cairo-xcb-surface.c -@@ -367,7 +367,7 @@ _get_image (cairo_xcb_surface_t *surface, - if (use_shm) { - image = _get_shm_image (surface, x, y, width, height); - if (image) { -- if (image->status) { -+ if (image->status == CAIRO_STATUS_SUCCESS) { - _cairo_xcb_connection_release (connection); - return image; - } --- -cgit v0.9.0.2-2-gbebe -From cc247c346b75353f16ab40ac74c54cdd9663d16b Mon Sep 17 00:00:00 2001 -From: Henry (Yu) Song <hsong@sisa.samsung.com> -Date: Mon, 02 Apr 2012 21:29:47 +0000 -Subject: gl: Remove an unused variable - ---- -diff --git a/src/cairo-gl-gradient.c b/src/cairo-gl-gradient.c -index b364b92..ce7c0dd 100644 ---- a/src/cairo-gl-gradient.c -+++ b/src/cairo-gl-gradient.c -@@ -207,7 +207,6 @@ _cairo_gl_gradient_create (cairo_gl_context_t *ctx, - cairo_status_t status; - int tex_width; - void *data; -- cairo_gl_dispatch_t *dispatch = &ctx->dispatch; - - if ((unsigned int) ctx->max_texture_size / 2 <= n_stops) - return CAIRO_INT_STATUS_UNSUPPORTED; --- -cgit v0.9.0.2-2-gbebe -From 7a262fd398c8a1f3c9052e8d9ec459e27ff91b4d Mon Sep 17 00:00:00 2001 -From: Adrian Johnson <ajohnson@redneon.com> -Date: Wed, 04 Apr 2012 10:23:09 +0000 -Subject: fix bug in _cairo_image_analyze_color - ---- -diff --git a/src/cairo-image-surface.c b/src/cairo-image-surface.c -index 8208a15..e860e1b 100644 ---- a/src/cairo-image-surface.c -+++ b/src/cairo-image-surface.c -@@ -1130,9 +1130,12 @@ _cairo_image_analyze_color (cairo_image_surface_t *image) - if (image->color != CAIRO_IMAGE_UNKNOWN_COLOR) - return image->color; - -- if (image->format == CAIRO_FORMAT_A1 || image->format == CAIRO_FORMAT_A8) -+ if (image->format == CAIRO_FORMAT_A1) - return image->color = CAIRO_IMAGE_IS_MONOCHROME; - -+ if (image->format == CAIRO_FORMAT_A8) -+ return image->color = CAIRO_IMAGE_IS_GRAYSCALE; -+ - if (image->format == CAIRO_FORMAT_ARGB32) { - image->color = CAIRO_IMAGE_IS_MONOCHROME; - for (y = 0; y < image->height; y++) { --- -cgit v0.9.0.2-2-gbebe -From 70b2856ed3d31b41e69b3d82fb9c5c11c2b3d3d4 Mon Sep 17 00:00:00 2001 -From: Adrian Johnson <ajohnson@redneon.com> -Date: Thu, 05 Apr 2012 23:43:35 +0000 -Subject: type1-subset: use fallback font if glyph widths are calculated - -Bug 48349 has a pdf file with a Type 1 font where the glyph widths are -of the form: - -34 9302 19 div hsbw ---- -diff --git a/src/cairo-type1-subset.c b/src/cairo-type1-subset.c -index 607ac8e..ba1008a 100644 ---- a/src/cairo-type1-subset.c -+++ b/src/cairo-type1-subset.c -@@ -751,6 +751,9 @@ cairo_type1_font_subset_parse_charstring (cairo_type1_font_subset_t *font, - command = *p++; - switch (command) { - case TYPE1_CHARSTRING_COMMAND_HSBW: -+ if (! last_op_was_integer) -+ return CAIRO_INT_STATUS_UNSUPPORTED; -+ - font->glyphs[glyph].width = font->build_stack.stack[1]/font->base.units_per_em; - font->build_stack.sp = 0; - last_op_was_integer = FALSE; -@@ -797,6 +800,9 @@ cairo_type1_font_subset_parse_charstring (cairo_type1_font_subset_t *font, - break; - - case TYPE1_CHARSTRING_COMMAND_SBW: -+ if (! last_op_was_integer) -+ return CAIRO_INT_STATUS_UNSUPPORTED; -+ - font->glyphs[glyph].width = font->build_stack.stack[2]/font->base.units_per_em; - font->build_stack.sp = 0; - last_op_was_integer = FALSE; --- -cgit v0.9.0.2-2-gbebe -From a6d955fcc46ae2da8d6f3b2cadeae64c03066461 Mon Sep 17 00:00:00 2001 -From: Adrian Johnson <ajohnson@redneon.com> -Date: Thu, 05 Apr 2012 23:53:50 +0000 -Subject: fix indentation in cairo_type1_font_subset_parse_charstring - ---- -diff --git a/src/cairo-type1-subset.c b/src/cairo-type1-subset.c -index ba1008a..ddef8ae 100644 ---- a/src/cairo-type1-subset.c -+++ b/src/cairo-type1-subset.c -@@ -1,3 +1,4 @@ -+/* -*- Mode: c; c-basic-offset: 4; indent-tabs-mode: t; tab-width: 8; -*- */ - /* cairo - a vector graphics library with display and print output - * - * Copyright © 2006 Red Hat, Inc -@@ -750,86 +751,79 @@ cairo_type1_font_subset_parse_charstring (cairo_type1_font_subset_t *font, - if (*p < 32) { - command = *p++; - switch (command) { -- case TYPE1_CHARSTRING_COMMAND_HSBW: -- if (! last_op_was_integer) -- return CAIRO_INT_STATUS_UNSUPPORTED; -+ case TYPE1_CHARSTRING_COMMAND_HSBW: -+ if (! last_op_was_integer) -+ return CAIRO_INT_STATUS_UNSUPPORTED; -+ -+ font->glyphs[glyph].width = font->build_stack.stack[1]/font->base.units_per_em; -+ font->build_stack.sp = 0; -+ last_op_was_integer = FALSE; -+ break; -+ -+ case TYPE1_CHARSTRING_COMMAND_CALLSUBR: -+ if (font->subset_subrs && -+ last_op_was_integer && -+ font->build_stack.top_value >= 0 && -+ font->build_stack.top_value < font->num_subrs) -+ { -+ subr_num = font->build_stack.top_value; -+ font->subrs[subr_num].used = TRUE; -+ last_op_was_integer = FALSE; -+ status = cairo_type1_font_subset_parse_charstring (font, -+ glyph, -+ font->subrs[subr_num].subr_string, -+ font->subrs[subr_num].subr_length); -+ } else { -+ font->subset_subrs = FALSE; -+ } -+ break; -+ -+ case TYPE1_CHARSTRING_COMMAND_ESCAPE: -+ command = command << 8 | *p++; -+ switch (command) { -+ case TYPE1_CHARSTRING_COMMAND_SEAC: -+ /* The seac command takes five integer arguments. The -+ * last two are glyph indices into the PS standard -+ * encoding give the names of the glyphs that this -+ * glyph is composed from. All we need to do is to -+ * make sure those glyphs are present in the subset -+ * under their standard names. */ -+ status = use_standard_encoding_glyph (font, font->build_stack.stack[3]); -+ if (unlikely (status)) -+ return status; -+ -+ status = use_standard_encoding_glyph (font, font->build_stack.stack[4]); -+ if (unlikely (status)) -+ return status; - -- font->glyphs[glyph].width = font->build_stack.stack[1]/font->base.units_per_em; - font->build_stack.sp = 0; - last_op_was_integer = FALSE; - break; - -- case TYPE1_CHARSTRING_COMMAND_CALLSUBR: -- if (font->subset_subrs && -- last_op_was_integer && -- font->build_stack.top_value >= 0 && -- font->build_stack.top_value < font->num_subrs) -- { -- subr_num = font->build_stack.top_value; -- font->subrs[subr_num].used = TRUE; -- last_op_was_integer = FALSE; -- status = cairo_type1_font_subset_parse_charstring (font, -- glyph, -- font->subrs[subr_num].subr_string, -- font->subrs[subr_num].subr_length); -- } else { -- font->subset_subrs = FALSE; -- } -+ case TYPE1_CHARSTRING_COMMAND_SBW: -+ if (! last_op_was_integer) -+ return CAIRO_INT_STATUS_UNSUPPORTED; -+ -+ font->glyphs[glyph].width = font->build_stack.stack[2]/font->base.units_per_em; -+ font->build_stack.sp = 0; -+ last_op_was_integer = FALSE; - break; - -- case TYPE1_CHARSTRING_COMMAND_ESCAPE: -- command = command << 8 | *p++; -- switch (command) { -- case TYPE1_CHARSTRING_COMMAND_SEAC: -- /* The seac command takes five integer arguments. The -- * last two are glyph indices into the PS standard -- * encoding give the names of the glyphs that this -- * glyph is composed from. All we need to do is to -- * make sure those glyphs are present in the subset -- * under their standard names. */ -- status = use_standard_encoding_glyph (font, font->build_stack.stack[3]); -- if (unlikely (status)) -- return status; -- -- status = use_standard_encoding_glyph (font, font->build_stack.stack[4]); -- if (unlikely (status)) -- return status; -- -- font->build_stack.sp = 0; -- last_op_was_integer = FALSE; -- break; -- -- case TYPE1_CHARSTRING_COMMAND_SBW: -- if (! last_op_was_integer) -- return CAIRO_INT_STATUS_UNSUPPORTED; -- -- font->glyphs[glyph].width = font->build_stack.stack[2]/font->base.units_per_em; -- font->build_stack.sp = 0; -- last_op_was_integer = FALSE; -- break; -- -- case TYPE1_CHARSTRING_COMMAND_CALLOTHERSUBR: -- for (i = 0; i < font->build_stack.sp; i++) -- font->ps_stack.other_subr_args[i] = font->build_stack.stack[i]; -- font->ps_stack.num_other_subr_args = font->build_stack.sp; -- font->ps_stack.cur_other_subr_arg = 0; -- font->build_stack.sp = 0; -- last_op_was_integer = FALSE; -- break; -- -- case TYPE1_CHARSTRING_COMMAND_POP: -- if (font->ps_stack.num_other_subr_args > font->ps_stack.cur_other_subr_arg) { -- font->build_stack.top_value = font->ps_stack.other_subr_args[font->ps_stack.cur_other_subr_arg++]; -- last_op_was_integer = TRUE; -- } else { -- font->subset_subrs = FALSE; -- } -- break; -- -- default: -- font->build_stack.sp = 0; -- last_op_was_integer = FALSE; -- break; -+ case TYPE1_CHARSTRING_COMMAND_CALLOTHERSUBR: -+ for (i = 0; i < font->build_stack.sp; i++) -+ font->ps_stack.other_subr_args[i] = font->build_stack.stack[i]; -+ font->ps_stack.num_other_subr_args = font->build_stack.sp; -+ font->ps_stack.cur_other_subr_arg = 0; -+ font->build_stack.sp = 0; -+ last_op_was_integer = FALSE; -+ break; -+ -+ case TYPE1_CHARSTRING_COMMAND_POP: -+ if (font->ps_stack.num_other_subr_args > font->ps_stack.cur_other_subr_arg) { -+ font->build_stack.top_value = font->ps_stack.other_subr_args[font->ps_stack.cur_other_subr_arg++]; -+ last_op_was_integer = TRUE; -+ } else { -+ font->subset_subrs = FALSE; - } - break; - -@@ -837,6 +831,13 @@ cairo_type1_font_subset_parse_charstring (cairo_type1_font_subset_t *font, - font->build_stack.sp = 0; - last_op_was_integer = FALSE; - break; -+ } -+ break; -+ -+ default: -+ font->build_stack.sp = 0; -+ last_op_was_integer = FALSE; -+ break; - } - } else { - /* integer argument */ --- -cgit v0.9.0.2-2-gbebe -From 8886220b5027296f5b3b95e9c2f93509108d3b9e Mon Sep 17 00:00:00 2001 -From: Adrian Johnson <ajohnson@redneon.com> -Date: Fri, 06 Apr 2012 00:13:53 +0000 -Subject: type1-subset: if font name is prefixed with a subset tag, strip it off - ---- -diff --git a/src/cairo-type1-subset.c b/src/cairo-type1-subset.c -index ddef8ae..e507abe 100644 ---- a/src/cairo-type1-subset.c -+++ b/src/cairo-type1-subset.c -@@ -381,6 +381,7 @@ cairo_type1_font_subset_get_fontname (cairo_type1_font_subset_t *font) - { - const char *start, *end, *segment_end; - char *s; -+ int i; - - segment_end = font->header_segment + font->header_segment_size; - start = find_token (font->header_segment, segment_end, "/FontName"); -@@ -406,6 +407,16 @@ cairo_type1_font_subset_get_fontname (cairo_type1_font_subset_t *font) - return CAIRO_INT_STATUS_UNSUPPORTED; - } - -+ /* If font name is prefixed with a subset tag, strip it off. */ -+ if (strlen(start) > 7 && start[6] == '+') { -+ for (i = 0; i < 6; i++) { -+ if (start[i] < 'A' || start[i] > 'Z') -+ break; -+ } -+ if (i == 6) -+ start += 7; -+ } -+ - font->base.base_font = strdup (start); - free (s); - if (unlikely (font->base.base_font == NULL)) --- -cgit v0.9.0.2-2-gbebe -From 8657ca10e34b0034602680b4304d47ecf90ccbfd Mon Sep 17 00:00:00 2001 -From: Adrian Johnson <ajohnson@redneon.com> -Date: Fri, 06 Apr 2012 11:50:40 +0000 -Subject: fix _cairo_pattern_get_ink_extents to work with snapshot recording surfaces - -It had caused pdf bbox sizes to regress to page size bboxes. ---- -diff --git a/src/cairo-pattern.c b/src/cairo-pattern.c -index 27ba004..5b3e177 100644 ---- a/src/cairo-pattern.c -+++ b/src/cairo-pattern.c -@@ -37,6 +37,7 @@ - #include "cairo-path-private.h" - #include "cairo-pattern-private.h" - #include "cairo-recording-surface-private.h" -+#include "cairo-surface-snapshot-private.h" - - #include <float.h> - -@@ -3666,6 +3667,9 @@ _cairo_pattern_get_ink_extents (const cairo_pattern_t *pattern, - (const cairo_surface_pattern_t *) pattern; - cairo_surface_t *surface = surface_pattern->surface; - -+ if (_cairo_surface_is_snapshot (surface)) -+ surface = _cairo_surface_snapshot_get_target (surface); -+ - if (_cairo_surface_is_recording (surface)) { - cairo_matrix_t imatrix; - cairo_box_t box; --- -cgit v0.9.0.2-2-gbebe |