diff --git a/src/cairo-pattern.c b/src/cairo-pattern.c index e8b1b23f2..bd7e07af5 100644 --- a/src/cairo-pattern.c +++ b/src/cairo-pattern.c @@ -2597,6 +2597,9 @@ cairo_pattern_get_rgba (cairo_pattern_t *pattern, cairo_solid_pattern_t *solid = (cairo_solid_pattern_t*) pattern; double r0, g0, b0, a0; + if (pattern->status) + return pattern->status; + if (pattern->type != CAIRO_PATTERN_TYPE_SOLID) return _cairo_error (CAIRO_STATUS_PATTERN_TYPE_MISMATCH); @@ -2635,6 +2638,9 @@ cairo_pattern_get_surface (cairo_pattern_t *pattern, { cairo_surface_pattern_t *spat = (cairo_surface_pattern_t*) pattern; + if (pattern->status) + return pattern->status; + if (pattern->type != CAIRO_PATTERN_TYPE_SURFACE) return _cairo_error (CAIRO_STATUS_PATTERN_TYPE_MISMATCH); @@ -2673,6 +2679,9 @@ cairo_pattern_get_color_stop_rgba (cairo_pattern_t *pattern, { cairo_gradient_pattern_t *gradient = (cairo_gradient_pattern_t*) pattern; + if (pattern->status) + return pattern->status; + if (pattern->type != CAIRO_PATTERN_TYPE_LINEAR && pattern->type != CAIRO_PATTERN_TYPE_RADIAL) return _cairo_error (CAIRO_STATUS_PATTERN_TYPE_MISMATCH); @@ -2714,6 +2723,9 @@ cairo_pattern_get_color_stop_count (cairo_pattern_t *pattern, { cairo_gradient_pattern_t *gradient = (cairo_gradient_pattern_t*) pattern; + if (pattern->status) + return pattern->status; + if (pattern->type != CAIRO_PATTERN_TYPE_LINEAR && pattern->type != CAIRO_PATTERN_TYPE_RADIAL) return _cairo_error (CAIRO_STATUS_PATTERN_TYPE_MISMATCH); @@ -2747,6 +2759,9 @@ cairo_pattern_get_linear_points (cairo_pattern_t *pattern, { cairo_linear_pattern_t *linear = (cairo_linear_pattern_t*) pattern; + if (pattern->status) + return pattern->status; + if (pattern->type != CAIRO_PATTERN_TYPE_LINEAR) return _cairo_error (CAIRO_STATUS_PATTERN_TYPE_MISMATCH); @@ -2788,6 +2803,9 @@ cairo_pattern_get_radial_circles (cairo_pattern_t *pattern, { cairo_radial_pattern_t *radial = (cairo_radial_pattern_t*) pattern; + if (pattern->status) + return pattern->status; + if (pattern->type != CAIRO_PATTERN_TYPE_RADIAL) return _cairo_error (CAIRO_STATUS_PATTERN_TYPE_MISMATCH);