ps: support single stop gradients

This commit is contained in:
Andrea Canciani 2010-06-10 10:52:16 +02:00
parent eb7fc35115
commit d17e2c5e23

View file

@ -3114,7 +3114,10 @@ _cairo_ps_surface_emit_pattern_stops (cairo_ps_surface_t *surface,
_cairo_output_stream_printf (surface->stream,
"/CairoFunction\n");
if (n_stops == 2) {
if (n_stops == 1) {
/* work around single stop gradients */
_cairo_ps_surface_emit_linear_colorgradient (surface, &stops[0], &stops[0]);
} else if (n_stops == 2) {
/* no need for stitched function */
_cairo_ps_surface_emit_linear_colorgradient (surface, &stops[0], &stops[1]);
} else {
@ -3176,8 +3179,6 @@ _cairo_ps_surface_emit_linear_pattern (cairo_ps_surface_t *surface,
double first_stop, last_stop;
int repeat_begin = 0, repeat_end = 1;
assert (pattern->base.n_stops >= 2);
extend = cairo_pattern_get_extend (&pattern->base.base);
pat_to_ps = pattern->base.base.matrix;
@ -3302,8 +3303,6 @@ _cairo_ps_surface_emit_radial_pattern (cairo_ps_surface_t *surface,
cairo_extend_t extend;
cairo_status_t status;
assert (pattern->base.n_stops >= 2);
extend = cairo_pattern_get_extend (&pattern->base.base);
pat_to_ps = pattern->base.base.matrix;