From 3a2a86721096a5efdec25a3ec041d9fc7eec6cf8 Mon Sep 17 00:00:00 2001 From: Adrian Johnson Date: Sun, 27 Apr 2008 17:49:04 +0930 Subject: [PATCH] PS: Fix gradients with one stop --- src/cairo-ps-surface.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/cairo-ps-surface.c b/src/cairo-ps-surface.c index f6940bfd6..59f07edda 100644 --- a/src/cairo-ps-surface.c +++ b/src/cairo-ps-surface.c @@ -2618,6 +2618,19 @@ _cairo_ps_surface_emit_linear_pattern (cairo_ps_surface_t *surface, if (pattern->base.n_stops == 0) return CAIRO_INT_STATUS_NOTHING_TO_DO; + if (pattern->base.n_stops == 1) { + cairo_solid_pattern_t solid; + + _cairo_pattern_init_solid (&solid, + &pattern->base.stops[0].color, + CAIRO_CONTENT_COLOR_ALPHA); + _cairo_ps_surface_emit_solid_pattern (surface, + &solid); + _cairo_pattern_fini (&solid.base); + + return CAIRO_STATUS_SUCCESS; + } + extend = cairo_pattern_get_extend (&pattern->base.base); pat_to_ps = pattern->base.base.matrix; @@ -2745,6 +2758,19 @@ _cairo_ps_surface_emit_radial_pattern (cairo_ps_surface_t *surface, if (pattern->base.n_stops == 0) return CAIRO_INT_STATUS_NOTHING_TO_DO; + if (pattern->base.n_stops == 1) { + cairo_solid_pattern_t solid; + + _cairo_pattern_init_solid (&solid, + &pattern->base.stops[0].color, + CAIRO_CONTENT_COLOR_ALPHA); + _cairo_ps_surface_emit_solid_pattern (surface, + &solid); + _cairo_pattern_fini (&solid.base); + + return CAIRO_STATUS_SUCCESS; + } + extend = cairo_pattern_get_extend (&pattern->base.base); pat_to_ps = pattern->base.base.matrix;