diff options
author | Andrea Canciani <ranma42@gmail.com> | 2010-12-28 12:22:54 +0100 |
---|---|---|
committer | Andrea Canciani <ranma42@gmail.com> | 2011-01-08 12:02:58 +0100 |
commit | 7d6058974d8d392537e1589758ef770aac1f5228 (patch) | |
tree | 8682aa2cf86993b56409bcf1c770e8564a0914b9 | |
parent | b2a645a78f5281fe97762f065e2b3a9c8bcab7d1 (diff) |
-rw-r--r-- | src/cairo-gl-surface.c | 2 | ||||
-rw-r--r-- | src/cairo-image-surface.c | 4 | ||||
-rw-r--r-- | src/cairo-pattern.c | 4 | ||||
-rw-r--r-- | src/cairo-win32-font.c | 3 | ||||
-rw-r--r-- | src/cairo-win32-surface.c | 3 | ||||
-rw-r--r-- | src/cairo-xcb-surface-render.c | 2 |
6 files changed, 10 insertions, 8 deletions
diff --git a/src/cairo-gl-surface.c b/src/cairo-gl-surface.c index d20fb98ca..6414654e0 100644 --- a/src/cairo-gl-surface.c +++ b/src/cairo-gl-surface.c @@ -1406,7 +1406,7 @@ _cairo_gl_surface_paint (void *abstract_surface, return _cairo_gl_surface_clear (abstract_surface, CAIRO_COLOR_TRANSPARENT); else if (source->type == CAIRO_PATTERN_TYPE_SOLID && (op == CAIRO_OPERATOR_SOURCE || - (op == CAIRO_OPERATOR_OVER && _cairo_pattern_is_opaque_solid (source)))) { + (op == CAIRO_OPERATOR_OVER && _cairo_pattern_is_opaque (source, NULL)))) { return _cairo_gl_surface_clear (abstract_surface, &((cairo_solid_pattern_t *) source)->color); } diff --git a/src/cairo-image-surface.c b/src/cairo-image-surface.c index 1ea2ab574..34e1b4209 100644 --- a/src/cairo-image-surface.c +++ b/src/cairo-image-surface.c @@ -1818,7 +1818,7 @@ reduce_alpha_op (cairo_image_surface_t *dst, { return dst->base.is_clear && dst->base.content == CAIRO_CONTENT_ALPHA && - _cairo_pattern_is_opaque (pattern) && + _cairo_pattern_is_opaque (pattern, NULL) && can_reduce_alpha_op (op); } @@ -2384,7 +2384,7 @@ _composite_traps (void *closure, format = info->antialias == CAIRO_ANTIALIAS_NONE ? PIXMAN_a1 : PIXMAN_a8; if (dst_format == format && (pattern == NULL || - (op == CAIRO_OPERATOR_ADD && _cairo_pattern_is_opaque (pattern)))) + (op == CAIRO_OPERATOR_ADD && _cairo_pattern_is_opaque (pattern, NULL)))) { _pixman_image_add_traps (dst, dst_x, dst_y, info); return CAIRO_STATUS_SUCCESS; diff --git a/src/cairo-pattern.c b/src/cairo-pattern.c index cca857b1d..2d00e554f 100644 --- a/src/cairo-pattern.c +++ b/src/cairo-pattern.c @@ -3425,7 +3425,7 @@ _cairo_mesh_pattern_coord_box (const cairo_mesh_pattern_t *mesh, * * Return value: %TRUE if the pattern is a solid color. **/ -cairo_private cairo_bool_t +static cairo_bool_t _cairo_gradient_pattern_is_solid (const cairo_gradient_pattern_t *gradient, const cairo_rectangle_int_t *extents, cairo_color_t *color) @@ -3672,7 +3672,7 @@ _cairo_pattern_is_opaque (const cairo_pattern_t *abstract_pattern, pattern = (cairo_pattern_union_t *) abstract_pattern; switch (pattern->base.type) { case CAIRO_PATTERN_TYPE_SOLID: - return _cairo_pattern_is_opaque_solid (abstract_pattern); + return CAIRO_COLOR_IS_OPAQUE (&pattern->solid.color); case CAIRO_PATTERN_TYPE_SURFACE: return _surface_is_opaque (&pattern->surface, extents); case CAIRO_PATTERN_TYPE_LINEAR: diff --git a/src/cairo-win32-font.c b/src/cairo-win32-font.c index d0c29bbda..4ba635906 100644 --- a/src/cairo-win32-font.c +++ b/src/cairo-win32-font.c @@ -1407,7 +1407,8 @@ _cairo_win32_scaled_font_show_glyphs (void *abstract_font, if (_cairo_surface_is_win32 (generic_surface) && surface->format == CAIRO_FORMAT_RGB24 && op == CAIRO_OPERATOR_OVER && - _cairo_pattern_is_opaque_solid (pattern)) { + pattern->type == CAIRO_PATTERN_TYPE_SOLID && + _cairo_pattern_is_opaque (pattern, NULL)) { cairo_solid_pattern_t *solid_pattern = (cairo_solid_pattern_t *)pattern; diff --git a/src/cairo-win32-surface.c b/src/cairo-win32-surface.c index c335d9780..89d13b63b 100644 --- a/src/cairo-win32-surface.c +++ b/src/cairo-win32-surface.c @@ -1530,7 +1530,8 @@ _cairo_win32_surface_show_glyphs_internal (void *surface, return CAIRO_INT_STATUS_UNSUPPORTED; /* We can only handle opaque solid color sources */ - if (!_cairo_pattern_is_opaque_solid(source)) + if (source->type != CAIRO_PATTERN_TYPE_SOLID || + ! _cairo_pattern_is_opaque (source, NULL)) return CAIRO_INT_STATUS_UNSUPPORTED; /* We can only handle operator SOURCE or OVER with the destination diff --git a/src/cairo-xcb-surface-render.c b/src/cairo-xcb-surface-render.c index 1a719968c..a00a048a5 100644 --- a/src/cairo-xcb-surface-render.c +++ b/src/cairo-xcb-surface-render.c @@ -2008,7 +2008,7 @@ reduce_alpha_op (cairo_surface_t *dst, { return dst->is_clear && dst->content == CAIRO_CONTENT_ALPHA && - _cairo_pattern_is_opaque_solid (pattern) && + _cairo_pattern_is_opaque (pattern, NULL) && can_reduce_alpha_op (op); } |