mirror of
https://gitlab.freedesktop.org/cairo/cairo.git
synced 2026-05-02 23:38:13 +02:00
[pattern] Avoid needless copying of patterns.
Only copy the pattern if we need to modify it, e.g. preserve a copy in a snapshot or a soft-mask, or to modify the matrix. Otherwise we can continue to use the original pattern and mark it as const in order to generate compiler warnings if we do attempt to write to it.
This commit is contained in:
parent
9d2189afbd
commit
7944601864
27 changed files with 607 additions and 529 deletions
|
|
@ -96,10 +96,10 @@ _cairo_analysis_surface_merge_status (cairo_int_status_t status_a,
|
|||
|
||||
static cairo_int_status_t
|
||||
_analyze_meta_surface_pattern (cairo_analysis_surface_t *surface,
|
||||
cairo_pattern_t *pattern)
|
||||
const cairo_pattern_t *pattern)
|
||||
{
|
||||
cairo_surface_t *analysis = &surface->base;
|
||||
cairo_surface_pattern_t *surface_pattern;
|
||||
const cairo_surface_pattern_t *surface_pattern;
|
||||
cairo_status_t status;
|
||||
cairo_bool_t old_has_ctm;
|
||||
cairo_matrix_t old_ctm, p2d;
|
||||
|
|
@ -109,7 +109,7 @@ _analyze_meta_surface_pattern (cairo_analysis_surface_t *surface,
|
|||
int old_height;
|
||||
|
||||
assert (pattern->type == CAIRO_PATTERN_TYPE_SURFACE);
|
||||
surface_pattern = (cairo_surface_pattern_t *) pattern;
|
||||
surface_pattern = (const cairo_surface_pattern_t *) pattern;
|
||||
assert (_cairo_surface_is_meta (surface_pattern->surface));
|
||||
|
||||
old_width = surface->width;
|
||||
|
|
@ -321,8 +321,8 @@ _cairo_analysis_surface_get_extents (void *abstract_surface,
|
|||
|
||||
static cairo_int_status_t
|
||||
_cairo_analysis_surface_paint (void *abstract_surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source)
|
||||
cairo_operator_t op,
|
||||
const cairo_pattern_t *source)
|
||||
{
|
||||
cairo_analysis_surface_t *surface = abstract_surface;
|
||||
cairo_status_t status, backend_status;
|
||||
|
|
@ -362,8 +362,8 @@ _cairo_analysis_surface_paint (void *abstract_surface,
|
|||
static cairo_int_status_t
|
||||
_cairo_analysis_surface_mask (void *abstract_surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source,
|
||||
cairo_pattern_t *mask)
|
||||
const cairo_pattern_t *source,
|
||||
const cairo_pattern_t *mask)
|
||||
{
|
||||
cairo_analysis_surface_t *surface = abstract_surface;
|
||||
cairo_int_status_t status, backend_status;
|
||||
|
|
@ -381,7 +381,7 @@ _cairo_analysis_surface_mask (void *abstract_surface,
|
|||
cairo_int_status_t backend_mask_status = CAIRO_STATUS_SUCCESS;
|
||||
|
||||
if (source->type == CAIRO_PATTERN_TYPE_SURFACE) {
|
||||
cairo_surface_pattern_t *surface_pattern = (cairo_surface_pattern_t *) source;
|
||||
const cairo_surface_pattern_t *surface_pattern = (const cairo_surface_pattern_t *) source;
|
||||
if (_cairo_surface_is_meta (surface_pattern->surface)) {
|
||||
backend_source_status =
|
||||
_analyze_meta_surface_pattern (surface, source);
|
||||
|
|
@ -411,6 +411,7 @@ _cairo_analysis_surface_mask (void *abstract_surface,
|
|||
|
||||
if (_cairo_operator_bounded_by_source (op)) {
|
||||
cairo_rectangle_int_t source_extents;
|
||||
|
||||
status = _cairo_pattern_get_extents (source, &source_extents);
|
||||
if (status)
|
||||
return status;
|
||||
|
|
@ -438,7 +439,7 @@ _cairo_analysis_surface_mask (void *abstract_surface,
|
|||
static cairo_int_status_t
|
||||
_cairo_analysis_surface_stroke (void *abstract_surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source,
|
||||
const cairo_pattern_t *source,
|
||||
cairo_path_fixed_t *path,
|
||||
cairo_stroke_style_t *style,
|
||||
cairo_matrix_t *ctm,
|
||||
|
|
@ -510,7 +511,7 @@ _cairo_analysis_surface_stroke (void *abstract_surface,
|
|||
static cairo_int_status_t
|
||||
_cairo_analysis_surface_fill (void *abstract_surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source,
|
||||
const cairo_pattern_t *source,
|
||||
cairo_path_fixed_t *path,
|
||||
cairo_fill_rule_t fill_rule,
|
||||
double tolerance,
|
||||
|
|
@ -578,7 +579,7 @@ _cairo_analysis_surface_fill (void *abstract_surface,
|
|||
static cairo_int_status_t
|
||||
_cairo_analysis_surface_show_glyphs (void *abstract_surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source,
|
||||
const cairo_pattern_t *source,
|
||||
cairo_glyph_t *glyphs,
|
||||
int num_glyphs,
|
||||
cairo_scaled_font_t *scaled_font,
|
||||
|
|
@ -653,7 +654,7 @@ _cairo_analysis_surface_has_show_text_glyphs (void *abstract_surface)
|
|||
static cairo_int_status_t
|
||||
_cairo_analysis_surface_show_text_glyphs (void *abstract_surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source,
|
||||
const cairo_pattern_t *source,
|
||||
const char *utf8,
|
||||
int utf8_len,
|
||||
cairo_glyph_t *glyphs,
|
||||
|
|
@ -897,18 +898,18 @@ typedef cairo_int_status_t
|
|||
typedef cairo_int_status_t
|
||||
(*_paint_func) (void *surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source);
|
||||
const cairo_pattern_t *source);
|
||||
|
||||
typedef cairo_int_status_t
|
||||
(*_mask_func) (void *surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source,
|
||||
cairo_pattern_t *mask);
|
||||
const cairo_pattern_t *source,
|
||||
const cairo_pattern_t *mask);
|
||||
|
||||
typedef cairo_int_status_t
|
||||
(*_stroke_func) (void *surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source,
|
||||
const cairo_pattern_t *source,
|
||||
cairo_path_fixed_t *path,
|
||||
cairo_stroke_style_t *style,
|
||||
cairo_matrix_t *ctm,
|
||||
|
|
@ -919,7 +920,7 @@ typedef cairo_int_status_t
|
|||
typedef cairo_int_status_t
|
||||
(*_fill_func) (void *surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source,
|
||||
const cairo_pattern_t *source,
|
||||
cairo_path_fixed_t *path,
|
||||
cairo_fill_rule_t fill_rule,
|
||||
double tolerance,
|
||||
|
|
@ -928,7 +929,7 @@ typedef cairo_int_status_t
|
|||
typedef cairo_int_status_t
|
||||
(*_show_glyphs_func) (void *surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source,
|
||||
const cairo_pattern_t *source,
|
||||
cairo_glyph_t *glyphs,
|
||||
int num_glyphs,
|
||||
cairo_scaled_font_t *scaled_font,
|
||||
|
|
|
|||
|
|
@ -702,8 +702,8 @@ _cairo_directfb_surface_clone_similar (void *abstract_surface,
|
|||
#if DFB_COMPOSITE || DFB_COMPOSITE_TRAPEZOIDS
|
||||
static cairo_int_status_t
|
||||
_directfb_prepare_composite (cairo_directfb_surface_t *dst,
|
||||
cairo_pattern_t *src_pattern,
|
||||
cairo_pattern_t *mask_pattern,
|
||||
const cairo_pattern_t *src_pattern,
|
||||
const cairo_pattern_t *mask_pattern,
|
||||
cairo_operator_t op,
|
||||
int *src_x, int *src_y,
|
||||
int *mask_x, int *mask_y,
|
||||
|
|
@ -732,7 +732,7 @@ _directfb_prepare_composite (cairo_directfb_surface_t *dst,
|
|||
|
||||
return CAIRO_INT_STATUS_UNSUPPORTED;
|
||||
if (mask_pattern->type != CAIRO_PATTERN_TYPE_SOLID) {
|
||||
cairo_pattern_t *tmp;
|
||||
const cairo_pattern_t *tmp;
|
||||
int tmp_x, tmp_y;
|
||||
|
||||
if (src_pattern->type != CAIRO_PATTERN_TYPE_SOLID ||
|
||||
|
|
@ -761,11 +761,6 @@ _directfb_prepare_composite (cairo_directfb_surface_t *dst,
|
|||
color = _cairo_stock_color (CAIRO_STOCK_WHITE);
|
||||
}
|
||||
|
||||
/* XXX DirectFB currently does not support filtering, so force NEAREST
|
||||
* in order to hit optimisations inside core.
|
||||
*/
|
||||
src_pattern->filter = CAIRO_FILTER_NEAREST;
|
||||
|
||||
status = _cairo_pattern_acquire_surface (src_pattern, &dst->base,
|
||||
*src_x, *src_y, width, height,
|
||||
(cairo_surface_t **) &src,
|
||||
|
|
@ -842,7 +837,7 @@ _directfb_prepare_composite (cairo_directfb_surface_t *dst,
|
|||
|
||||
static void
|
||||
_directfb_finish_composite (cairo_directfb_surface_t *dst,
|
||||
cairo_pattern_t *src_pattern,
|
||||
const cairo_pattern_t *src_pattern,
|
||||
cairo_surface_t *src,
|
||||
cairo_surface_attributes_t *src_attr)
|
||||
{
|
||||
|
|
@ -892,8 +887,8 @@ _directfb_categorize_operation (cairo_surface_attributes_t *src_attr)
|
|||
|
||||
static cairo_int_status_t
|
||||
_cairo_directfb_surface_composite (cairo_operator_t op,
|
||||
cairo_pattern_t *src_pattern,
|
||||
cairo_pattern_t *mask_pattern,
|
||||
const cairo_pattern_t *src_pattern,
|
||||
const cairo_pattern_t *mask_pattern,
|
||||
void *abstract_dst,
|
||||
int src_x, int src_y,
|
||||
int mask_x, int mask_y,
|
||||
|
|
@ -1160,7 +1155,7 @@ _cairo_directfb_surface_fill_rectangles (void *abstract_surface
|
|||
#if DFB_COMPOSITE_TRAPEZOIDS
|
||||
static cairo_int_status_t
|
||||
_cairo_directfb_surface_composite_trapezoids (cairo_operator_t op,
|
||||
cairo_pattern_t *pattern,
|
||||
const cairo_pattern_t *pattern,
|
||||
void *abstract_dst,
|
||||
cairo_antialias_t antialias,
|
||||
int src_x, int src_y,
|
||||
|
|
@ -1686,13 +1681,13 @@ _cairo_directfb_surface_scaled_glyph_fini (cairo_scaled_glyph_t *scaled_glyph,
|
|||
}
|
||||
|
||||
static cairo_int_status_t
|
||||
_cairo_directfb_surface_show_glyphs (void *abstract_dst,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *pattern,
|
||||
cairo_glyph_t *glyphs,
|
||||
int num_glyphs,
|
||||
cairo_scaled_font_t *scaled_font,
|
||||
int *remaining_glyphs)
|
||||
_cairo_directfb_surface_show_glyphs (void *abstract_dst,
|
||||
cairo_operator_t op,
|
||||
const cairo_pattern_t *pattern,
|
||||
cairo_glyph_t *glyphs,
|
||||
int num_glyphs,
|
||||
cairo_scaled_font_t *scaled_font,
|
||||
int *remaining_glyphs)
|
||||
{
|
||||
cairo_directfb_surface_t *dst = abstract_dst;
|
||||
cairo_directfb_font_cache_t *cache;
|
||||
|
|
|
|||
|
|
@ -718,7 +718,7 @@ typedef struct _cairo_glitz_surface_attributes {
|
|||
} cairo_glitz_surface_attributes_t;
|
||||
|
||||
static cairo_int_status_t
|
||||
_cairo_glitz_pattern_acquire_surface (cairo_pattern_t *pattern,
|
||||
_cairo_glitz_pattern_acquire_surface (const cairo_pattern_t *pattern,
|
||||
cairo_glitz_surface_t *dst,
|
||||
int x,
|
||||
int y,
|
||||
|
|
@ -937,7 +937,7 @@ _cairo_glitz_pattern_acquire_surface (cairo_pattern_t *pattern,
|
|||
}
|
||||
|
||||
static void
|
||||
_cairo_glitz_pattern_release_surface (cairo_pattern_t *pattern,
|
||||
_cairo_glitz_pattern_release_surface (const cairo_pattern_t *pattern,
|
||||
cairo_glitz_surface_t *surface,
|
||||
cairo_glitz_surface_attributes_t *attr)
|
||||
{
|
||||
|
|
@ -948,8 +948,8 @@ _cairo_glitz_pattern_release_surface (cairo_pattern_t *pattern,
|
|||
}
|
||||
|
||||
static cairo_int_status_t
|
||||
_cairo_glitz_pattern_acquire_surfaces (cairo_pattern_t *src,
|
||||
cairo_pattern_t *mask,
|
||||
_cairo_glitz_pattern_acquire_surfaces (const cairo_pattern_t *src,
|
||||
const cairo_pattern_t *mask,
|
||||
cairo_glitz_surface_t *dst,
|
||||
int src_x,
|
||||
int src_y,
|
||||
|
|
@ -985,37 +985,31 @@ _cairo_glitz_pattern_acquire_surfaces (cairo_pattern_t *src,
|
|||
_cairo_pattern_init_solid (&tmp, &combined, CAIRO_CONTENT_COLOR_ALPHA);
|
||||
|
||||
mask = NULL;
|
||||
} else {
|
||||
status = _cairo_pattern_init_copy (&tmp.base, src);
|
||||
if (status)
|
||||
return status;
|
||||
src = &tmp.base;
|
||||
}
|
||||
|
||||
status = _cairo_glitz_pattern_acquire_surface (&tmp.base, dst,
|
||||
status = _cairo_glitz_pattern_acquire_surface (src, dst,
|
||||
src_x, src_y,
|
||||
width, height,
|
||||
src_out, sattr);
|
||||
|
||||
_cairo_pattern_fini (&tmp.base);
|
||||
if (src == &tmp.base)
|
||||
_cairo_pattern_fini (&tmp.base);
|
||||
|
||||
if (status)
|
||||
return status;
|
||||
|
||||
if (mask)
|
||||
{
|
||||
status = _cairo_pattern_init_copy (&tmp.base, mask);
|
||||
if (status)
|
||||
return status;
|
||||
|
||||
status = _cairo_glitz_pattern_acquire_surface (&tmp.base, dst,
|
||||
status = _cairo_glitz_pattern_acquire_surface (mask, dst,
|
||||
mask_x, mask_y,
|
||||
width, height,
|
||||
mask_out, mattr);
|
||||
|
||||
if (status)
|
||||
_cairo_glitz_pattern_release_surface (&tmp.base, *src_out, sattr);
|
||||
|
||||
_cairo_pattern_fini (&tmp.base);
|
||||
if (status) {
|
||||
/* XXX src == &tmp.base -> invalid (currently inconsequential) */
|
||||
_cairo_glitz_pattern_release_surface (src, *src_out, sattr);
|
||||
}
|
||||
|
||||
return status;
|
||||
}
|
||||
|
|
@ -1039,8 +1033,8 @@ _cairo_glitz_surface_set_attributes (cairo_glitz_surface_t *surface,
|
|||
|
||||
static cairo_int_status_t
|
||||
_cairo_glitz_surface_composite (cairo_operator_t op,
|
||||
cairo_pattern_t *src_pattern,
|
||||
cairo_pattern_t *mask_pattern,
|
||||
const cairo_pattern_t *src_pattern,
|
||||
const cairo_pattern_t *mask_pattern,
|
||||
void *abstract_dst,
|
||||
int src_x,
|
||||
int src_y,
|
||||
|
|
@ -1197,7 +1191,7 @@ _cairo_glitz_surface_fill_rectangles (void *abstract_dst,
|
|||
|
||||
static cairo_int_status_t
|
||||
_cairo_glitz_surface_composite_trapezoids (cairo_operator_t op,
|
||||
cairo_pattern_t *pattern,
|
||||
const cairo_pattern_t *pattern,
|
||||
void *abstract_dst,
|
||||
cairo_antialias_t antialias,
|
||||
int src_x,
|
||||
|
|
@ -1210,7 +1204,7 @@ _cairo_glitz_surface_composite_trapezoids (cairo_operator_t op,
|
|||
int n_traps)
|
||||
{
|
||||
cairo_pattern_union_t tmp_src_pattern;
|
||||
cairo_pattern_t *src_pattern;
|
||||
const cairo_pattern_t *src_pattern;
|
||||
cairo_glitz_surface_attributes_t attributes;
|
||||
cairo_glitz_surface_t *dst = abstract_dst;
|
||||
cairo_glitz_surface_t *src;
|
||||
|
|
@ -2101,7 +2095,7 @@ _cairo_glitz_surface_add_glyph (cairo_glitz_surface_t *surface,
|
|||
static cairo_int_status_t
|
||||
_cairo_glitz_surface_old_show_glyphs (cairo_scaled_font_t *scaled_font,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *pattern,
|
||||
const cairo_pattern_t *pattern,
|
||||
void *abstract_surface,
|
||||
int src_x,
|
||||
int src_y,
|
||||
|
|
|
|||
|
|
@ -810,34 +810,53 @@ _cairo_gstate_path_extents (cairo_gstate_t *gstate,
|
|||
|
||||
static cairo_status_t
|
||||
_cairo_gstate_copy_transformed_pattern (cairo_gstate_t *gstate,
|
||||
cairo_pattern_t *pattern,
|
||||
cairo_pattern_t **pattern,
|
||||
cairo_pattern_t *original,
|
||||
cairo_matrix_t *ctm_inverse)
|
||||
{
|
||||
cairo_surface_pattern_t *surface_pattern;
|
||||
cairo_surface_t *surface;
|
||||
cairo_status_t status;
|
||||
|
||||
status = _cairo_pattern_init_copy (pattern, original);
|
||||
if (status)
|
||||
return status;
|
||||
cairo_bool_t have_copy = FALSE;
|
||||
|
||||
/* apply device_transform first so that it is transformed by ctm_inverse */
|
||||
if (cairo_pattern_get_type (original) == CAIRO_PATTERN_TYPE_SURFACE) {
|
||||
if (original->type == CAIRO_PATTERN_TYPE_SURFACE) {
|
||||
cairo_surface_pattern_t *surface_pattern;
|
||||
cairo_surface_t *surface;
|
||||
|
||||
surface_pattern = (cairo_surface_pattern_t *) original;
|
||||
surface = surface_pattern->surface;
|
||||
if (_cairo_surface_has_device_transform (surface))
|
||||
_cairo_pattern_transform (pattern, &surface->device_transform);
|
||||
|
||||
if (_cairo_surface_has_device_transform (surface)) {
|
||||
status = _cairo_pattern_init_copy (*pattern, original);
|
||||
if (status)
|
||||
return status;
|
||||
|
||||
have_copy = TRUE;
|
||||
|
||||
_cairo_pattern_transform (*pattern, &surface->device_transform);
|
||||
}
|
||||
}
|
||||
|
||||
_cairo_pattern_transform (pattern, ctm_inverse);
|
||||
if (! _cairo_matrix_is_identity (ctm_inverse)) {
|
||||
if (! have_copy) {
|
||||
status = _cairo_pattern_init_copy (*pattern, original);
|
||||
if (status)
|
||||
return status;
|
||||
|
||||
have_copy = TRUE;
|
||||
}
|
||||
|
||||
_cairo_pattern_transform (*pattern, ctm_inverse);
|
||||
}
|
||||
|
||||
if (! have_copy)
|
||||
*pattern = original;
|
||||
|
||||
return CAIRO_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static cairo_status_t
|
||||
_cairo_gstate_copy_transformed_source (cairo_gstate_t *gstate,
|
||||
cairo_pattern_t *pattern)
|
||||
_cairo_gstate_copy_transformed_source (cairo_gstate_t *gstate,
|
||||
cairo_pattern_t **pattern)
|
||||
{
|
||||
return _cairo_gstate_copy_transformed_pattern (gstate, pattern,
|
||||
gstate->source,
|
||||
|
|
@ -845,9 +864,9 @@ _cairo_gstate_copy_transformed_source (cairo_gstate_t *gstate,
|
|||
}
|
||||
|
||||
static cairo_status_t
|
||||
_cairo_gstate_copy_transformed_mask (cairo_gstate_t *gstate,
|
||||
cairo_pattern_t *pattern,
|
||||
cairo_pattern_t *mask)
|
||||
_cairo_gstate_copy_transformed_mask (cairo_gstate_t *gstate,
|
||||
cairo_pattern_t **pattern,
|
||||
cairo_pattern_t *mask)
|
||||
{
|
||||
return _cairo_gstate_copy_transformed_pattern (gstate, pattern,
|
||||
mask,
|
||||
|
|
@ -858,7 +877,8 @@ cairo_status_t
|
|||
_cairo_gstate_paint (cairo_gstate_t *gstate)
|
||||
{
|
||||
cairo_status_t status;
|
||||
cairo_pattern_union_t pattern;
|
||||
cairo_pattern_t *pattern;
|
||||
cairo_pattern_union_t pattern_stack;
|
||||
|
||||
if (gstate->source->status)
|
||||
return gstate->source->status;
|
||||
|
|
@ -867,15 +887,17 @@ _cairo_gstate_paint (cairo_gstate_t *gstate)
|
|||
if (status)
|
||||
return status;
|
||||
|
||||
status = _cairo_gstate_copy_transformed_source (gstate, &pattern.base);
|
||||
pattern = &pattern_stack.base;
|
||||
status = _cairo_gstate_copy_transformed_source (gstate, &pattern);
|
||||
if (status)
|
||||
return status;
|
||||
|
||||
status = _cairo_surface_paint (gstate->target,
|
||||
gstate->op,
|
||||
&pattern.base);
|
||||
pattern);
|
||||
|
||||
_cairo_pattern_fini (&pattern.base);
|
||||
if (pattern == &pattern_stack.base)
|
||||
_cairo_pattern_fini (pattern);
|
||||
|
||||
return status;
|
||||
}
|
||||
|
|
@ -885,7 +907,8 @@ _cairo_gstate_mask (cairo_gstate_t *gstate,
|
|||
cairo_pattern_t *mask)
|
||||
{
|
||||
cairo_status_t status;
|
||||
cairo_pattern_union_t source_pattern, mask_pattern;
|
||||
cairo_pattern_union_t source_pattern_stack, mask_pattern_stack;
|
||||
cairo_pattern_t *source_pattern, *mask_pattern;
|
||||
|
||||
if (mask->status)
|
||||
return mask->status;
|
||||
|
|
@ -897,22 +920,26 @@ _cairo_gstate_mask (cairo_gstate_t *gstate,
|
|||
if (status)
|
||||
return status;
|
||||
|
||||
status = _cairo_gstate_copy_transformed_source (gstate, &source_pattern.base);
|
||||
source_pattern = &source_pattern_stack.base;
|
||||
status = _cairo_gstate_copy_transformed_source (gstate, &source_pattern);
|
||||
if (status)
|
||||
return status;
|
||||
|
||||
status = _cairo_gstate_copy_transformed_mask (gstate, &mask_pattern.base, mask);
|
||||
mask_pattern = &mask_pattern_stack.base;
|
||||
status = _cairo_gstate_copy_transformed_mask (gstate, &mask_pattern, mask);
|
||||
if (status)
|
||||
goto CLEANUP_SOURCE;
|
||||
|
||||
status = _cairo_surface_mask (gstate->target,
|
||||
gstate->op,
|
||||
&source_pattern.base,
|
||||
&mask_pattern.base);
|
||||
source_pattern,
|
||||
mask_pattern);
|
||||
|
||||
_cairo_pattern_fini (&mask_pattern.base);
|
||||
if (mask_pattern == &mask_pattern_stack.base)
|
||||
_cairo_pattern_fini (&mask_pattern_stack.base);
|
||||
CLEANUP_SOURCE:
|
||||
_cairo_pattern_fini (&source_pattern.base);
|
||||
if (source_pattern == &source_pattern_stack.base)
|
||||
_cairo_pattern_fini (&source_pattern_stack.base);
|
||||
|
||||
return status;
|
||||
}
|
||||
|
|
@ -921,7 +948,8 @@ cairo_status_t
|
|||
_cairo_gstate_stroke (cairo_gstate_t *gstate, cairo_path_fixed_t *path)
|
||||
{
|
||||
cairo_status_t status;
|
||||
cairo_pattern_union_t source_pattern;
|
||||
cairo_pattern_union_t source_pattern_stack;
|
||||
cairo_pattern_t *source_pattern;
|
||||
|
||||
if (gstate->source->status)
|
||||
return gstate->source->status;
|
||||
|
|
@ -933,14 +961,15 @@ _cairo_gstate_stroke (cairo_gstate_t *gstate, cairo_path_fixed_t *path)
|
|||
if (status)
|
||||
return status;
|
||||
|
||||
source_pattern = &source_pattern_stack.base;
|
||||
status = _cairo_gstate_copy_transformed_source (gstate,
|
||||
&source_pattern.base);
|
||||
&source_pattern);
|
||||
if (status)
|
||||
return status;
|
||||
|
||||
status = _cairo_surface_stroke (gstate->target,
|
||||
gstate->op,
|
||||
&source_pattern.base,
|
||||
source_pattern,
|
||||
path,
|
||||
&gstate->stroke_style,
|
||||
&gstate->ctm,
|
||||
|
|
@ -948,10 +977,10 @@ _cairo_gstate_stroke (cairo_gstate_t *gstate, cairo_path_fixed_t *path)
|
|||
gstate->tolerance,
|
||||
gstate->antialias);
|
||||
|
||||
_cairo_pattern_fini (&source_pattern.base);
|
||||
if (source_pattern == &source_pattern_stack.base)
|
||||
_cairo_pattern_fini (&source_pattern_stack.base);
|
||||
|
||||
return status;
|
||||
|
||||
}
|
||||
|
||||
cairo_status_t
|
||||
|
|
@ -1001,7 +1030,8 @@ cairo_status_t
|
|||
_cairo_gstate_fill (cairo_gstate_t *gstate, cairo_path_fixed_t *path)
|
||||
{
|
||||
cairo_status_t status;
|
||||
cairo_pattern_union_t pattern;
|
||||
cairo_pattern_union_t pattern_stack;
|
||||
cairo_pattern_t *pattern;
|
||||
|
||||
if (gstate->source->status)
|
||||
return gstate->source->status;
|
||||
|
|
@ -1010,19 +1040,21 @@ _cairo_gstate_fill (cairo_gstate_t *gstate, cairo_path_fixed_t *path)
|
|||
if (status)
|
||||
return status;
|
||||
|
||||
status = _cairo_gstate_copy_transformed_source (gstate, &pattern.base);
|
||||
pattern = &pattern_stack.base;
|
||||
status = _cairo_gstate_copy_transformed_source (gstate, &pattern);
|
||||
if (status)
|
||||
return status;
|
||||
|
||||
status = _cairo_surface_fill (gstate->target,
|
||||
gstate->op,
|
||||
&pattern.base,
|
||||
pattern,
|
||||
path,
|
||||
gstate->fill_rule,
|
||||
gstate->tolerance,
|
||||
gstate->antialias);
|
||||
|
||||
_cairo_pattern_fini (&pattern.base);
|
||||
if (pattern == &pattern_stack.base)
|
||||
_cairo_pattern_fini (&pattern_stack.base);
|
||||
|
||||
return status;
|
||||
}
|
||||
|
|
@ -1582,7 +1614,8 @@ _cairo_gstate_show_text_glyphs (cairo_gstate_t *gstate,
|
|||
cairo_text_cluster_flags_t cluster_flags)
|
||||
{
|
||||
cairo_status_t status;
|
||||
cairo_pattern_union_t source_pattern;
|
||||
cairo_pattern_union_t source_pattern_stack;
|
||||
cairo_pattern_t *source_pattern;
|
||||
cairo_glyph_t *transformed_glyphs;
|
||||
cairo_glyph_t stack_transformed_glyphs[CAIRO_STACK_ARRAY_LENGTH (cairo_glyph_t)];
|
||||
|
||||
|
|
@ -1613,7 +1646,8 @@ _cairo_gstate_show_text_glyphs (cairo_gstate_t *gstate,
|
|||
if (status || num_glyphs == 0)
|
||||
goto CLEANUP_GLYPHS;
|
||||
|
||||
status = _cairo_gstate_copy_transformed_source (gstate, &source_pattern.base);
|
||||
source_pattern = &source_pattern_stack.base;
|
||||
status = _cairo_gstate_copy_transformed_source (gstate, &source_pattern);
|
||||
if (status)
|
||||
goto CLEANUP_GLYPHS;
|
||||
|
||||
|
|
@ -1635,7 +1669,7 @@ _cairo_gstate_show_text_glyphs (cairo_gstate_t *gstate,
|
|||
_cairo_scaled_font_get_max_scale (gstate->scaled_font) <= 10240) {
|
||||
status = _cairo_surface_show_text_glyphs (gstate->target,
|
||||
gstate->op,
|
||||
&source_pattern.base,
|
||||
source_pattern,
|
||||
utf8, utf8_len,
|
||||
transformed_glyphs, num_glyphs,
|
||||
clusters, num_clusters,
|
||||
|
|
@ -1653,7 +1687,7 @@ _cairo_gstate_show_text_glyphs (cairo_gstate_t *gstate,
|
|||
if (status == CAIRO_STATUS_SUCCESS)
|
||||
status = _cairo_surface_fill (gstate->target,
|
||||
gstate->op,
|
||||
&source_pattern.base,
|
||||
source_pattern,
|
||||
&path,
|
||||
CAIRO_FILL_RULE_WINDING,
|
||||
gstate->tolerance,
|
||||
|
|
@ -1662,7 +1696,8 @@ _cairo_gstate_show_text_glyphs (cairo_gstate_t *gstate,
|
|||
_cairo_path_fixed_fini (&path);
|
||||
}
|
||||
|
||||
_cairo_pattern_fini (&source_pattern.base);
|
||||
if (source_pattern == &source_pattern_stack.base)
|
||||
_cairo_pattern_fini (&source_pattern_stack.base);
|
||||
|
||||
CLEANUP_GLYPHS:
|
||||
if (transformed_glyphs != stack_transformed_glyphs)
|
||||
|
|
|
|||
|
|
@ -939,8 +939,8 @@ _pixman_operator (cairo_operator_t op)
|
|||
|
||||
static cairo_int_status_t
|
||||
_cairo_image_surface_composite (cairo_operator_t op,
|
||||
cairo_pattern_t *src_pattern,
|
||||
cairo_pattern_t *mask_pattern,
|
||||
const cairo_pattern_t *src_pattern,
|
||||
const cairo_pattern_t *mask_pattern,
|
||||
void *abstract_dst,
|
||||
int src_x,
|
||||
int src_y,
|
||||
|
|
@ -1072,7 +1072,7 @@ _cairo_image_surface_fill_rectangles (void *abstract_surface,
|
|||
|
||||
static cairo_int_status_t
|
||||
_cairo_image_surface_composite_trapezoids (cairo_operator_t op,
|
||||
cairo_pattern_t *pattern,
|
||||
const cairo_pattern_t *pattern,
|
||||
void *abstract_dst,
|
||||
cairo_antialias_t antialias,
|
||||
int src_x,
|
||||
|
|
|
|||
|
|
@ -219,7 +219,7 @@ _cairo_meta_surface_release_source_image (void *abstract_surface,
|
|||
static cairo_int_status_t
|
||||
_cairo_meta_surface_paint (void *abstract_surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source)
|
||||
const cairo_pattern_t *source)
|
||||
{
|
||||
cairo_status_t status;
|
||||
cairo_meta_surface_t *meta = abstract_surface;
|
||||
|
|
@ -259,8 +259,8 @@ _cairo_meta_surface_paint (void *abstract_surface,
|
|||
static cairo_int_status_t
|
||||
_cairo_meta_surface_mask (void *abstract_surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source,
|
||||
cairo_pattern_t *mask)
|
||||
const cairo_pattern_t *source,
|
||||
const cairo_pattern_t *mask)
|
||||
{
|
||||
cairo_status_t status;
|
||||
cairo_meta_surface_t *meta = abstract_surface;
|
||||
|
|
@ -300,7 +300,7 @@ _cairo_meta_surface_mask (void *abstract_surface,
|
|||
static cairo_int_status_t
|
||||
_cairo_meta_surface_stroke (void *abstract_surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source,
|
||||
const cairo_pattern_t *source,
|
||||
cairo_path_fixed_t *path,
|
||||
cairo_stroke_style_t *style,
|
||||
cairo_matrix_t *ctm,
|
||||
|
|
@ -357,7 +357,7 @@ _cairo_meta_surface_stroke (void *abstract_surface,
|
|||
static cairo_int_status_t
|
||||
_cairo_meta_surface_fill (void *abstract_surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source,
|
||||
const cairo_pattern_t *source,
|
||||
cairo_path_fixed_t *path,
|
||||
cairo_fill_rule_t fill_rule,
|
||||
double tolerance,
|
||||
|
|
@ -411,7 +411,7 @@ _cairo_meta_surface_has_show_text_glyphs (void *abstract_surface)
|
|||
static cairo_int_status_t
|
||||
_cairo_meta_surface_show_text_glyphs (void *abstract_surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source,
|
||||
const cairo_pattern_t *source,
|
||||
const char *utf8,
|
||||
int utf8_len,
|
||||
cairo_glyph_t *glyphs,
|
||||
|
|
|
|||
|
|
@ -526,7 +526,7 @@ _cairo_paginated_surface_get_font_options (void *abstract_surfa
|
|||
static cairo_int_status_t
|
||||
_cairo_paginated_surface_paint (void *abstract_surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source)
|
||||
const cairo_pattern_t *source)
|
||||
{
|
||||
cairo_paginated_surface_t *surface = abstract_surface;
|
||||
|
||||
|
|
@ -542,8 +542,8 @@ _cairo_paginated_surface_paint (void *abstract_surface,
|
|||
static cairo_int_status_t
|
||||
_cairo_paginated_surface_mask (void *abstract_surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source,
|
||||
cairo_pattern_t *mask)
|
||||
const cairo_pattern_t *source,
|
||||
const cairo_pattern_t *mask)
|
||||
{
|
||||
cairo_paginated_surface_t *surface = abstract_surface;
|
||||
|
||||
|
|
@ -553,7 +553,7 @@ _cairo_paginated_surface_mask (void *abstract_surface,
|
|||
static cairo_int_status_t
|
||||
_cairo_paginated_surface_stroke (void *abstract_surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source,
|
||||
const cairo_pattern_t *source,
|
||||
cairo_path_fixed_t *path,
|
||||
cairo_stroke_style_t *style,
|
||||
cairo_matrix_t *ctm,
|
||||
|
|
@ -578,7 +578,7 @@ _cairo_paginated_surface_stroke (void *abstract_surface,
|
|||
static cairo_int_status_t
|
||||
_cairo_paginated_surface_fill (void *abstract_surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source,
|
||||
const cairo_pattern_t *source,
|
||||
cairo_path_fixed_t *path,
|
||||
cairo_fill_rule_t fill_rule,
|
||||
double tolerance,
|
||||
|
|
@ -608,7 +608,7 @@ _cairo_paginated_surface_has_show_text_glyphs (void *abstract_surface)
|
|||
static cairo_int_status_t
|
||||
_cairo_paginated_surface_show_text_glyphs (void *abstract_surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source,
|
||||
const cairo_pattern_t *source,
|
||||
const char *utf8,
|
||||
int utf8_len,
|
||||
cairo_glyph_t *glyphs,
|
||||
|
|
|
|||
|
|
@ -1232,7 +1232,7 @@ _cairo_linear_pattern_classify (cairo_linear_pattern_t *pattern,
|
|||
}
|
||||
|
||||
static cairo_int_status_t
|
||||
_cairo_pattern_acquire_surface_for_gradient (cairo_gradient_pattern_t *pattern,
|
||||
_cairo_pattern_acquire_surface_for_gradient (const cairo_gradient_pattern_t *pattern,
|
||||
cairo_surface_t *dst,
|
||||
int x,
|
||||
int y,
|
||||
|
|
@ -1496,7 +1496,7 @@ _cairo_pattern_solid_surface_matches_color (
|
|||
}
|
||||
|
||||
static cairo_int_status_t
|
||||
_cairo_pattern_acquire_surface_for_solid (cairo_solid_pattern_t *pattern,
|
||||
_cairo_pattern_acquire_surface_for_solid (const cairo_solid_pattern_t *pattern,
|
||||
cairo_surface_t *dst,
|
||||
int x,
|
||||
int y,
|
||||
|
|
@ -1716,8 +1716,8 @@ _cairo_pattern_is_opaque (const cairo_pattern_t *abstract_pattern)
|
|||
* backends do currently (see bug #10508)
|
||||
*/
|
||||
static cairo_filter_t
|
||||
_cairo_pattern_analyze_filter (cairo_surface_pattern_t *pattern,
|
||||
double *pad_out)
|
||||
_cairo_pattern_analyze_filter (const cairo_surface_pattern_t *pattern,
|
||||
double *pad_out)
|
||||
{
|
||||
double pad;
|
||||
cairo_filter_t optimized_filter;
|
||||
|
|
@ -1767,7 +1767,7 @@ _pixman_nearest_sample (double d)
|
|||
}
|
||||
|
||||
static cairo_int_status_t
|
||||
_cairo_pattern_acquire_surface_for_surface (cairo_surface_pattern_t *pattern,
|
||||
_cairo_pattern_acquire_surface_for_surface (const cairo_surface_pattern_t *pattern,
|
||||
cairo_surface_t *dst,
|
||||
int x,
|
||||
int y,
|
||||
|
|
@ -2005,7 +2005,7 @@ _cairo_pattern_acquire_surface_for_surface (cairo_surface_pattern_t *pattern,
|
|||
* Return value: %CAIRO_STATUS_SUCCESS if a surface was stored in @surface_out.
|
||||
**/
|
||||
cairo_int_status_t
|
||||
_cairo_pattern_acquire_surface (cairo_pattern_t *pattern,
|
||||
_cairo_pattern_acquire_surface (const cairo_pattern_t *pattern,
|
||||
cairo_surface_t *dst,
|
||||
int x,
|
||||
int y,
|
||||
|
|
@ -2097,16 +2097,16 @@ _cairo_pattern_acquire_surface (cairo_pattern_t *pattern,
|
|||
* Releases resources obtained by _cairo_pattern_acquire_surface.
|
||||
**/
|
||||
void
|
||||
_cairo_pattern_release_surface (cairo_pattern_t *pattern,
|
||||
_cairo_pattern_release_surface (const cairo_pattern_t *pattern,
|
||||
cairo_surface_t *surface,
|
||||
cairo_surface_attributes_t *attributes)
|
||||
{
|
||||
if (attributes->acquired)
|
||||
{
|
||||
cairo_surface_pattern_t *surface_pattern;
|
||||
const cairo_surface_pattern_t *surface_pattern;
|
||||
|
||||
assert (pattern->type == CAIRO_PATTERN_TYPE_SURFACE);
|
||||
surface_pattern = (cairo_surface_pattern_t *) pattern;
|
||||
surface_pattern = (const cairo_surface_pattern_t *) pattern;
|
||||
|
||||
_cairo_surface_release_source_image (surface_pattern->surface,
|
||||
(cairo_image_surface_t *) surface,
|
||||
|
|
@ -2119,8 +2119,8 @@ _cairo_pattern_release_surface (cairo_pattern_t *pattern,
|
|||
}
|
||||
|
||||
cairo_int_status_t
|
||||
_cairo_pattern_acquire_surfaces (cairo_pattern_t *src,
|
||||
cairo_pattern_t *mask,
|
||||
_cairo_pattern_acquire_surfaces (const cairo_pattern_t *src,
|
||||
const cairo_pattern_t *mask,
|
||||
cairo_surface_t *dst,
|
||||
int src_x,
|
||||
int src_y,
|
||||
|
|
@ -2134,7 +2134,7 @@ _cairo_pattern_acquire_surfaces (cairo_pattern_t *src,
|
|||
cairo_surface_attributes_t *mask_attributes)
|
||||
{
|
||||
cairo_int_status_t status;
|
||||
cairo_pattern_union_t src_tmp, mask_tmp;
|
||||
cairo_pattern_union_t src_tmp;
|
||||
|
||||
if (src->status)
|
||||
return src->status;
|
||||
|
|
@ -2159,48 +2159,32 @@ _cairo_pattern_acquire_surfaces (cairo_pattern_t *src,
|
|||
|
||||
_cairo_pattern_init_solid (&src_tmp.solid, &combined, CAIRO_CONTENT_COLOR_ALPHA);
|
||||
|
||||
src = &src_tmp.base;
|
||||
mask = NULL;
|
||||
}
|
||||
else
|
||||
{
|
||||
status = _cairo_pattern_init_copy (&src_tmp.base, src);
|
||||
if (status)
|
||||
return status;
|
||||
}
|
||||
|
||||
status = _cairo_pattern_acquire_surface (&src_tmp.base, dst,
|
||||
status = _cairo_pattern_acquire_surface (src, dst,
|
||||
src_x, src_y,
|
||||
width, height,
|
||||
src_out, src_attributes);
|
||||
if (status) {
|
||||
_cairo_pattern_fini (&src_tmp.base);
|
||||
return status;
|
||||
}
|
||||
|
||||
if (mask == NULL)
|
||||
{
|
||||
_cairo_pattern_fini (&src_tmp.base);
|
||||
*mask_out = NULL;
|
||||
return CAIRO_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
status = _cairo_pattern_init_copy (&mask_tmp.base, mask);
|
||||
if (status)
|
||||
goto CLEANUP_SOURCE;
|
||||
goto BAIL;
|
||||
|
||||
status = _cairo_pattern_acquire_surface (&mask_tmp.base, dst,
|
||||
if (mask == NULL) {
|
||||
*mask_out = NULL;
|
||||
goto BAIL;
|
||||
}
|
||||
|
||||
status = _cairo_pattern_acquire_surface (mask, dst,
|
||||
mask_x, mask_y,
|
||||
width, height,
|
||||
mask_out, mask_attributes);
|
||||
|
||||
_cairo_pattern_fini (&mask_tmp.base);
|
||||
|
||||
CLEANUP_SOURCE:
|
||||
if (status)
|
||||
_cairo_pattern_release_surface (&src_tmp.base,
|
||||
*src_out, src_attributes);
|
||||
_cairo_pattern_release_surface (src, *src_out, src_attributes);
|
||||
|
||||
_cairo_pattern_fini (&src_tmp.base);
|
||||
BAIL:
|
||||
if (src == &src_tmp.base)
|
||||
_cairo_pattern_fini (&src_tmp.base);
|
||||
|
||||
return status;
|
||||
}
|
||||
|
|
@ -2218,16 +2202,16 @@ CLEANUP_SOURCE:
|
|||
* with a little more work.
|
||||
**/
|
||||
cairo_status_t
|
||||
_cairo_pattern_get_extents (cairo_pattern_t *pattern,
|
||||
cairo_rectangle_int_t *extents)
|
||||
_cairo_pattern_get_extents (const cairo_pattern_t *pattern,
|
||||
cairo_rectangle_int_t *extents)
|
||||
{
|
||||
if (pattern->extend == CAIRO_EXTEND_NONE &&
|
||||
pattern->type == CAIRO_PATTERN_TYPE_SURFACE)
|
||||
{
|
||||
cairo_status_t status;
|
||||
cairo_rectangle_int_t surface_extents;
|
||||
cairo_surface_pattern_t *surface_pattern =
|
||||
(cairo_surface_pattern_t *) pattern;
|
||||
const cairo_surface_pattern_t *surface_pattern =
|
||||
(const cairo_surface_pattern_t *) pattern;
|
||||
cairo_surface_t *surface = surface_pattern->surface;
|
||||
cairo_matrix_t imatrix;
|
||||
double x1, y1, x2, y2;
|
||||
|
|
|
|||
|
|
@ -774,7 +774,7 @@ _cairo_pdf_surface_add_smask_group (cairo_pdf_surface_t *surface,
|
|||
|
||||
static cairo_status_t
|
||||
_cairo_pdf_surface_add_pdf_pattern (cairo_pdf_surface_t *surface,
|
||||
cairo_pattern_t *pattern,
|
||||
const cairo_pattern_t *pattern,
|
||||
cairo_pdf_resource_t *pattern_res,
|
||||
cairo_pdf_resource_t *gstate_res)
|
||||
{
|
||||
|
|
@ -807,10 +807,13 @@ _cairo_pdf_surface_add_pdf_pattern (cairo_pdf_surface_t *surface,
|
|||
}
|
||||
}
|
||||
|
||||
pdf_pattern.pattern = cairo_pattern_reference (pattern);
|
||||
status = _cairo_pattern_create_copy (&pdf_pattern.pattern, pattern);
|
||||
if (status)
|
||||
return status;
|
||||
|
||||
pdf_pattern.pattern_res = _cairo_pdf_surface_new_object (surface);
|
||||
if (pdf_pattern.pattern_res.id == 0) {
|
||||
cairo_pattern_destroy (pattern);
|
||||
cairo_pattern_destroy (pdf_pattern.pattern);
|
||||
return _cairo_error (CAIRO_STATUS_NO_MEMORY);
|
||||
}
|
||||
|
||||
|
|
@ -822,7 +825,7 @@ _cairo_pdf_surface_add_pdf_pattern (cairo_pdf_surface_t *surface,
|
|||
if (_cairo_pattern_is_opaque (pattern) == FALSE) {
|
||||
pdf_pattern.gstate_res = _cairo_pdf_surface_new_object (surface);
|
||||
if (pdf_pattern.gstate_res.id == 0) {
|
||||
cairo_pattern_destroy (pattern);
|
||||
cairo_pattern_destroy (pdf_pattern.pattern);
|
||||
return _cairo_error (CAIRO_STATUS_NO_MEMORY);
|
||||
}
|
||||
}
|
||||
|
|
@ -835,7 +838,7 @@ _cairo_pdf_surface_add_pdf_pattern (cairo_pdf_surface_t *surface,
|
|||
|
||||
status = _cairo_array_append (&surface->patterns, &pdf_pattern);
|
||||
if (status) {
|
||||
cairo_pattern_destroy (pattern);
|
||||
cairo_pattern_destroy (pdf_pattern.pattern);
|
||||
return status;
|
||||
}
|
||||
|
||||
|
|
@ -2616,16 +2619,16 @@ _cairo_pdf_surface_emit_pattern (cairo_pdf_surface_t *surface, cairo_pdf_pattern
|
|||
|
||||
static cairo_status_t
|
||||
_cairo_pdf_surface_select_pattern (cairo_pdf_surface_t *surface,
|
||||
cairo_pattern_t *pattern,
|
||||
const cairo_pattern_t *pattern,
|
||||
cairo_pdf_resource_t pattern_res,
|
||||
cairo_bool_t is_stroke)
|
||||
{
|
||||
cairo_status_t status;
|
||||
int alpha;
|
||||
cairo_color_t *solid_color = NULL;
|
||||
const cairo_color_t *solid_color = NULL;
|
||||
|
||||
if (pattern->type == CAIRO_PATTERN_TYPE_SOLID) {
|
||||
cairo_solid_pattern_t *solid = (cairo_solid_pattern_t *) pattern;
|
||||
const cairo_solid_pattern_t *solid = (const cairo_solid_pattern_t *) pattern;
|
||||
|
||||
solid_color = &solid->color;
|
||||
}
|
||||
|
|
@ -4257,11 +4260,11 @@ _surface_pattern_supported (cairo_surface_pattern_t *pattern)
|
|||
}
|
||||
|
||||
static cairo_bool_t
|
||||
_gradient_pattern_supported (cairo_pattern_t *pattern)
|
||||
_gradient_pattern_supported (const cairo_pattern_t *pattern)
|
||||
{
|
||||
cairo_extend_t extend;
|
||||
|
||||
extend = cairo_pattern_get_extend (pattern);
|
||||
extend = cairo_pattern_get_extend ((cairo_pattern_t *) pattern);
|
||||
|
||||
|
||||
/* Radial gradients are currently only supported with EXTEND_NONE
|
||||
|
|
@ -4292,7 +4295,7 @@ _gradient_pattern_supported (cairo_pattern_t *pattern)
|
|||
}
|
||||
|
||||
static cairo_bool_t
|
||||
_pattern_supported (cairo_pattern_t *pattern)
|
||||
_pattern_supported (const cairo_pattern_t *pattern)
|
||||
{
|
||||
if (pattern->type == CAIRO_PATTERN_TYPE_SOLID)
|
||||
return TRUE;
|
||||
|
|
@ -4310,10 +4313,13 @@ _pattern_supported (cairo_pattern_t *pattern)
|
|||
static cairo_int_status_t
|
||||
_cairo_pdf_surface_analyze_operation (cairo_pdf_surface_t *surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *pattern)
|
||||
const cairo_pattern_t *pattern)
|
||||
{
|
||||
if (surface->force_fallbacks && surface->paginated_mode == CAIRO_PAGINATED_MODE_ANALYZE)
|
||||
if (surface->force_fallbacks &&
|
||||
surface->paginated_mode == CAIRO_PAGINATED_MODE_ANALYZE)
|
||||
{
|
||||
return CAIRO_INT_STATUS_UNSUPPORTED;
|
||||
}
|
||||
|
||||
if (! _pattern_supported (pattern))
|
||||
return CAIRO_INT_STATUS_UNSUPPORTED;
|
||||
|
|
@ -4368,7 +4374,7 @@ _cairo_pdf_surface_analyze_operation (cairo_pdf_surface_t *surface,
|
|||
static cairo_bool_t
|
||||
_cairo_pdf_surface_operation_supported (cairo_pdf_surface_t *surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *pattern)
|
||||
const cairo_pattern_t *pattern)
|
||||
{
|
||||
if (_cairo_pdf_surface_analyze_operation (surface, op, pattern) != CAIRO_INT_STATUS_UNSUPPORTED)
|
||||
return TRUE;
|
||||
|
|
@ -4396,7 +4402,7 @@ _cairo_pdf_surface_start_fallback (cairo_pdf_surface_t *surface)
|
|||
static cairo_int_status_t
|
||||
_cairo_pdf_surface_paint (void *abstract_surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source)
|
||||
const cairo_pattern_t *source)
|
||||
{
|
||||
cairo_pdf_surface_t *surface = abstract_surface;
|
||||
cairo_status_t status;
|
||||
|
|
@ -4427,7 +4433,11 @@ _cairo_pdf_surface_paint (void *abstract_surface,
|
|||
return _cairo_error (CAIRO_STATUS_NO_MEMORY);
|
||||
|
||||
group->operation = PDF_PAINT;
|
||||
group->source = cairo_pattern_reference (source);
|
||||
status = _cairo_pattern_create_copy (&group->source, source);
|
||||
if (status) {
|
||||
_cairo_pdf_smask_group_destroy (group);
|
||||
return status;
|
||||
}
|
||||
group->source_res = pattern_res;
|
||||
status = _cairo_pdf_surface_add_smask_group (surface, group);
|
||||
if (status) {
|
||||
|
|
@ -4471,8 +4481,8 @@ _cairo_pdf_surface_paint (void *abstract_surface,
|
|||
static cairo_int_status_t
|
||||
_cairo_pdf_surface_mask (void *abstract_surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source,
|
||||
cairo_pattern_t *mask)
|
||||
const cairo_pattern_t *source,
|
||||
const cairo_pattern_t *mask)
|
||||
{
|
||||
cairo_pdf_surface_t *surface = abstract_surface;
|
||||
cairo_pdf_smask_group_t *group;
|
||||
|
|
@ -4505,8 +4515,16 @@ _cairo_pdf_surface_mask (void *abstract_surface,
|
|||
return _cairo_error (CAIRO_STATUS_NO_MEMORY);
|
||||
|
||||
group->operation = PDF_MASK;
|
||||
group->source = cairo_pattern_reference (source);
|
||||
group->mask = cairo_pattern_reference (mask);
|
||||
status = _cairo_pattern_create_copy (&group->source, source);
|
||||
if (status) {
|
||||
_cairo_pdf_smask_group_destroy (group);
|
||||
return status;
|
||||
}
|
||||
status = _cairo_pattern_create_copy (&group->mask, mask);
|
||||
if (status) {
|
||||
_cairo_pdf_smask_group_destroy (group);
|
||||
return status;
|
||||
}
|
||||
group->source_res = _cairo_pdf_surface_new_object (surface);
|
||||
if (group->source_res.id == 0) {
|
||||
_cairo_pdf_smask_group_destroy (group);
|
||||
|
|
@ -4542,7 +4560,7 @@ _cairo_pdf_surface_mask (void *abstract_surface,
|
|||
static cairo_int_status_t
|
||||
_cairo_pdf_surface_stroke (void *abstract_surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source,
|
||||
const cairo_pattern_t *source,
|
||||
cairo_path_fixed_t *path,
|
||||
cairo_stroke_style_t *style,
|
||||
cairo_matrix_t *ctm,
|
||||
|
|
@ -4574,7 +4592,11 @@ _cairo_pdf_surface_stroke (void *abstract_surface,
|
|||
return _cairo_error (CAIRO_STATUS_NO_MEMORY);
|
||||
|
||||
group->operation = PDF_STROKE;
|
||||
group->source = cairo_pattern_reference (source);
|
||||
status = _cairo_pattern_create_copy (&group->source, source);
|
||||
if (status) {
|
||||
_cairo_pdf_smask_group_destroy (group);
|
||||
return status;
|
||||
}
|
||||
group->source_res = pattern_res;
|
||||
status = _cairo_path_fixed_init_copy (&group->path, path);
|
||||
if (status) {
|
||||
|
|
@ -4631,7 +4653,7 @@ _cairo_pdf_surface_stroke (void *abstract_surface,
|
|||
static cairo_int_status_t
|
||||
_cairo_pdf_surface_fill (void *abstract_surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source,
|
||||
const cairo_pattern_t *source,
|
||||
cairo_path_fixed_t *path,
|
||||
cairo_fill_rule_t fill_rule,
|
||||
double tolerance,
|
||||
|
|
@ -4666,7 +4688,11 @@ _cairo_pdf_surface_fill (void *abstract_surface,
|
|||
return _cairo_error (CAIRO_STATUS_NO_MEMORY);
|
||||
|
||||
group->operation = PDF_FILL;
|
||||
group->source = cairo_pattern_reference (source);
|
||||
status = _cairo_pattern_create_copy (&group->source, source);
|
||||
if (status) {
|
||||
_cairo_pdf_smask_group_destroy (group);
|
||||
return status;
|
||||
}
|
||||
group->source_res = pattern_res;
|
||||
status = _cairo_path_fixed_init_copy (&group->path, path);
|
||||
if (status) {
|
||||
|
|
@ -4719,13 +4745,13 @@ _cairo_pdf_surface_fill (void *abstract_surface,
|
|||
static cairo_int_status_t
|
||||
_cairo_pdf_surface_fill_stroke (void *abstract_surface,
|
||||
cairo_operator_t fill_op,
|
||||
cairo_pattern_t *fill_source,
|
||||
const cairo_pattern_t *fill_source,
|
||||
cairo_fill_rule_t fill_rule,
|
||||
double fill_tolerance,
|
||||
cairo_antialias_t fill_antialias,
|
||||
cairo_path_fixed_t *path,
|
||||
cairo_operator_t stroke_op,
|
||||
cairo_pattern_t *stroke_source,
|
||||
const cairo_pattern_t *stroke_source,
|
||||
cairo_stroke_style_t *stroke_style,
|
||||
cairo_matrix_t *stroke_ctm,
|
||||
cairo_matrix_t *stroke_ctm_inverse,
|
||||
|
|
@ -4812,8 +4838,8 @@ _cairo_pdf_surface_has_show_text_glyphs (void *abstract_surface)
|
|||
|
||||
static cairo_int_status_t
|
||||
_cairo_pdf_surface_show_text_glyphs (void *abstract_surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source,
|
||||
cairo_operator_t op,
|
||||
const cairo_pattern_t *source,
|
||||
const char *utf8,
|
||||
int utf8_len,
|
||||
cairo_glyph_t *glyphs,
|
||||
|
|
@ -4847,7 +4873,11 @@ _cairo_pdf_surface_show_text_glyphs (void *abstract_surface,
|
|||
return _cairo_error (CAIRO_STATUS_NO_MEMORY);
|
||||
|
||||
group->operation = PDF_SHOW_GLYPHS;
|
||||
group->source = cairo_pattern_reference (source);
|
||||
status = _cairo_pattern_create_copy (&group->source, source);
|
||||
if (status) {
|
||||
_cairo_pdf_smask_group_destroy (group);
|
||||
return status;
|
||||
}
|
||||
group->source_res = pattern_res;
|
||||
|
||||
if (utf8_len) {
|
||||
|
|
|
|||
|
|
@ -1437,7 +1437,7 @@ _cairo_ps_surface_analyze_surface_pattern_transparency (cairo_ps_surface_t
|
|||
}
|
||||
|
||||
static cairo_bool_t
|
||||
surface_pattern_supported (cairo_surface_pattern_t *pattern)
|
||||
surface_pattern_supported (const cairo_surface_pattern_t *pattern)
|
||||
{
|
||||
cairo_extend_t extend;
|
||||
|
||||
|
|
@ -1478,9 +1478,9 @@ surface_pattern_supported (cairo_surface_pattern_t *pattern)
|
|||
|
||||
static cairo_bool_t
|
||||
_gradient_pattern_supported (cairo_ps_surface_t *surface,
|
||||
cairo_pattern_t *pattern)
|
||||
const cairo_pattern_t *pattern)
|
||||
{
|
||||
cairo_gradient_pattern_t *gradient = (cairo_gradient_pattern_t *) pattern;
|
||||
const cairo_gradient_pattern_t *gradient = (const cairo_gradient_pattern_t *) pattern;
|
||||
uint16_t alpha;
|
||||
cairo_extend_t extend;
|
||||
unsigned int i;
|
||||
|
|
@ -1499,7 +1499,7 @@ _gradient_pattern_supported (cairo_ps_surface_t *surface,
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
extend = cairo_pattern_get_extend (pattern);
|
||||
extend = cairo_pattern_get_extend ((cairo_pattern_t *) pattern);
|
||||
|
||||
/* Radial gradients are currently only supported when one circle
|
||||
* is inside the other. */
|
||||
|
|
@ -1531,7 +1531,7 @@ _gradient_pattern_supported (cairo_ps_surface_t *surface,
|
|||
}
|
||||
|
||||
static cairo_bool_t
|
||||
pattern_supported (cairo_ps_surface_t *surface, cairo_pattern_t *pattern)
|
||||
pattern_supported (cairo_ps_surface_t *surface, const cairo_pattern_t *pattern)
|
||||
{
|
||||
if (pattern->type == CAIRO_PATTERN_TYPE_SOLID)
|
||||
return TRUE;
|
||||
|
|
@ -1549,10 +1549,13 @@ pattern_supported (cairo_ps_surface_t *surface, cairo_pattern_t *pattern)
|
|||
static cairo_int_status_t
|
||||
_cairo_ps_surface_analyze_operation (cairo_ps_surface_t *surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *pattern)
|
||||
const cairo_pattern_t *pattern)
|
||||
{
|
||||
if (surface->force_fallbacks && surface->paginated_mode == CAIRO_PAGINATED_MODE_ANALYZE)
|
||||
if (surface->force_fallbacks &&
|
||||
surface->paginated_mode == CAIRO_PAGINATED_MODE_ANALYZE)
|
||||
{
|
||||
return CAIRO_INT_STATUS_UNSUPPORTED;
|
||||
}
|
||||
|
||||
if (! pattern_supported (surface, pattern))
|
||||
return CAIRO_INT_STATUS_UNSUPPORTED;
|
||||
|
|
@ -1597,7 +1600,7 @@ _cairo_ps_surface_analyze_operation (cairo_ps_surface_t *surface,
|
|||
static cairo_bool_t
|
||||
_cairo_ps_surface_operation_supported (cairo_ps_surface_t *surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *pattern)
|
||||
const cairo_pattern_t *pattern)
|
||||
{
|
||||
if (_cairo_ps_surface_analyze_operation (surface, op, pattern) != CAIRO_INT_STATUS_UNSUPPORTED)
|
||||
return TRUE;
|
||||
|
|
@ -2888,7 +2891,7 @@ _cairo_ps_surface_emit_radial_pattern (cairo_ps_surface_t *surface,
|
|||
|
||||
static cairo_status_t
|
||||
_cairo_ps_surface_emit_pattern (cairo_ps_surface_t *surface,
|
||||
cairo_pattern_t *pattern,
|
||||
const cairo_pattern_t *pattern,
|
||||
cairo_operator_t op)
|
||||
{
|
||||
cairo_status_t status;
|
||||
|
|
@ -3018,7 +3021,7 @@ _cairo_ps_surface_get_font_options (void *abstract_surface,
|
|||
static cairo_int_status_t
|
||||
_cairo_ps_surface_paint (void *abstract_surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source)
|
||||
const cairo_pattern_t *source)
|
||||
{
|
||||
cairo_ps_surface_t *surface = abstract_surface;
|
||||
cairo_output_stream_t *stream = surface->stream;
|
||||
|
|
@ -3077,7 +3080,7 @@ _cairo_ps_surface_paint (void *abstract_surface,
|
|||
static cairo_int_status_t
|
||||
_cairo_ps_surface_stroke (void *abstract_surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source,
|
||||
const cairo_pattern_t *source,
|
||||
cairo_path_fixed_t *path,
|
||||
cairo_stroke_style_t *style,
|
||||
cairo_matrix_t *ctm,
|
||||
|
|
@ -3111,12 +3114,12 @@ _cairo_ps_surface_stroke (void *abstract_surface,
|
|||
|
||||
static cairo_int_status_t
|
||||
_cairo_ps_surface_fill (void *abstract_surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source,
|
||||
cairo_path_fixed_t *path,
|
||||
cairo_fill_rule_t fill_rule,
|
||||
double tolerance,
|
||||
cairo_antialias_t antialias)
|
||||
cairo_operator_t op,
|
||||
const cairo_pattern_t *source,
|
||||
cairo_path_fixed_t *path,
|
||||
cairo_fill_rule_t fill_rule,
|
||||
double tolerance,
|
||||
cairo_antialias_t antialias)
|
||||
{
|
||||
cairo_ps_surface_t *surface = abstract_surface;
|
||||
cairo_int_status_t status;
|
||||
|
|
@ -3174,7 +3177,7 @@ _cairo_ps_surface_fill (void *abstract_surface,
|
|||
static cairo_int_status_t
|
||||
_cairo_ps_surface_show_glyphs (void *abstract_surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source,
|
||||
const cairo_pattern_t *source,
|
||||
cairo_glyph_t *glyphs,
|
||||
int num_glyphs,
|
||||
cairo_scaled_font_t *scaled_font,
|
||||
|
|
|
|||
|
|
@ -688,7 +688,7 @@ CreateGradientFunction (cairo_gradient_pattern_t *gpat)
|
|||
0, ComputeGradientValue, (CGFunctionReleaseInfoCallback) cairo_pattern_destroy
|
||||
};
|
||||
|
||||
return CGFunctionCreate (gpat,
|
||||
return CGFunctionCreate (_cairo_pattern_create_copy (&gpat->base),
|
||||
1,
|
||||
input_value_range,
|
||||
4,
|
||||
|
|
@ -766,7 +766,7 @@ CreateRepeatingGradientFunction (cairo_quartz_surface_t *surface,
|
|||
input_value_range[0] = 0.0 - 1.0 * rep_start;
|
||||
input_value_range[1] = 1.0 + 1.0 * rep_end;
|
||||
|
||||
return CGFunctionCreate (gpat,
|
||||
return CGFunctionCreate (_cairo_pattern_create_copy (&gpat->base),
|
||||
1,
|
||||
input_value_range,
|
||||
4,
|
||||
|
|
@ -1096,9 +1096,6 @@ _cairo_quartz_setup_linear_source (cairo_quartz_surface_t *surface,
|
|||
end = CGPointMake (_cairo_fixed_to_double (lpat->p2.x),
|
||||
_cairo_fixed_to_double (lpat->p2.y));
|
||||
|
||||
// ref will be released by the CGShading's destructor
|
||||
cairo_pattern_reference ((cairo_pattern_t*) lpat);
|
||||
|
||||
if (abspat->extend == CAIRO_EXTEND_NONE ||
|
||||
abspat->extend == CAIRO_EXTEND_PAD)
|
||||
{
|
||||
|
|
@ -1159,9 +1156,6 @@ _cairo_quartz_setup_radial_source (cairo_quartz_surface_t *surface,
|
|||
end = CGPointMake (_cairo_fixed_to_double (rpat->c2.x),
|
||||
_cairo_fixed_to_double (rpat->c2.y));
|
||||
|
||||
// ref will be released by the CGShading's destructor
|
||||
cairo_pattern_reference ((cairo_pattern_t*) rpat);
|
||||
|
||||
gradFunc = CreateGradientFunction ((cairo_gradient_pattern_t*) rpat);
|
||||
|
||||
surface->sourceShading = CGShadingCreateRadial (rgb,
|
||||
|
|
|
|||
|
|
@ -1785,7 +1785,7 @@ _cairo_scaled_font_glyph_device_extents (cairo_scaled_font_t *scaled_font,
|
|||
cairo_status_t
|
||||
_cairo_scaled_font_show_glyphs (cairo_scaled_font_t *scaled_font,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *pattern,
|
||||
const cairo_pattern_t *pattern,
|
||||
cairo_surface_t *surface,
|
||||
int source_x,
|
||||
int source_y,
|
||||
|
|
|
|||
|
|
@ -208,18 +208,18 @@ _cairo_sdl_surface_clone_similar (void *abstract_surface,
|
|||
}
|
||||
|
||||
static cairo_int_status_t
|
||||
_cairo_sdl_surface_composite (cairo_operator_t op,
|
||||
cairo_pattern_t *src_pattern,
|
||||
cairo_pattern_t *mask_pattern,
|
||||
_cairo_sdl_surface_composite (cairo_operator_t op,
|
||||
const cairo_pattern_t *src_pattern,
|
||||
const cairo_pattern_t *mask_pattern,
|
||||
void *abstract_dst,
|
||||
int src_x,
|
||||
int src_y,
|
||||
int mask_x,
|
||||
int mask_y,
|
||||
int dst_x,
|
||||
int dst_y,
|
||||
unsigned int width,
|
||||
unsigned int height)
|
||||
int src_x,
|
||||
int src_y,
|
||||
int mask_x,
|
||||
int mask_y,
|
||||
int dst_x,
|
||||
int dst_y,
|
||||
unsigned int width,
|
||||
unsigned int height)
|
||||
{
|
||||
cairo_sdl_surface_t *dst = abstract_dst;
|
||||
cairo_sdl_surface_t *src;
|
||||
|
|
|
|||
|
|
@ -42,19 +42,20 @@
|
|||
#include "cairoint.h"
|
||||
|
||||
cairo_private cairo_status_t
|
||||
_cairo_surface_fallback_paint (cairo_surface_t *surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source);
|
||||
_cairo_surface_fallback_paint (cairo_surface_t *surface,
|
||||
cairo_operator_t op,
|
||||
const cairo_pattern_t *source);
|
||||
|
||||
cairo_private cairo_status_t
|
||||
_cairo_surface_fallback_mask (cairo_surface_t *surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source,
|
||||
cairo_pattern_t *mask);
|
||||
const cairo_pattern_t *source,
|
||||
const cairo_pattern_t *mask);
|
||||
|
||||
cairo_private cairo_status_t
|
||||
_cairo_surface_fallback_stroke (cairo_surface_t *surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source,
|
||||
const cairo_pattern_t *source,
|
||||
cairo_path_fixed_t *path,
|
||||
cairo_stroke_style_t *stroke_style,
|
||||
cairo_matrix_t *ctm,
|
||||
|
|
@ -65,16 +66,16 @@ _cairo_surface_fallback_stroke (cairo_surface_t *surface,
|
|||
cairo_private cairo_status_t
|
||||
_cairo_surface_fallback_fill (cairo_surface_t *surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source,
|
||||
const cairo_pattern_t *source,
|
||||
cairo_path_fixed_t *path,
|
||||
cairo_fill_rule_t fill_rule,
|
||||
double tolerance,
|
||||
double tolerance,
|
||||
cairo_antialias_t antialias);
|
||||
|
||||
cairo_private cairo_status_t
|
||||
_cairo_surface_fallback_show_glyphs (cairo_surface_t *surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source,
|
||||
const cairo_pattern_t *source,
|
||||
cairo_glyph_t *glyphs,
|
||||
int num_glyphs,
|
||||
cairo_scaled_font_t *scaled_font);
|
||||
|
|
@ -83,18 +84,18 @@ cairo_private cairo_surface_t *
|
|||
_cairo_surface_fallback_snapshot (cairo_surface_t *surface);
|
||||
|
||||
cairo_private cairo_status_t
|
||||
_cairo_surface_fallback_composite (cairo_operator_t op,
|
||||
cairo_pattern_t *src,
|
||||
cairo_pattern_t *mask,
|
||||
cairo_surface_t *dst,
|
||||
int src_x,
|
||||
int src_y,
|
||||
int mask_x,
|
||||
int mask_y,
|
||||
int dst_x,
|
||||
int dst_y,
|
||||
unsigned int width,
|
||||
unsigned int height);
|
||||
_cairo_surface_fallback_composite (cairo_operator_t op,
|
||||
const cairo_pattern_t *src,
|
||||
const cairo_pattern_t *mask,
|
||||
cairo_surface_t *dst,
|
||||
int src_x,
|
||||
int src_y,
|
||||
int mask_x,
|
||||
int mask_y,
|
||||
int dst_x,
|
||||
int dst_y,
|
||||
unsigned int width,
|
||||
unsigned int height);
|
||||
|
||||
cairo_private cairo_status_t
|
||||
_cairo_surface_fallback_fill_rectangles (cairo_surface_t *surface,
|
||||
|
|
@ -105,7 +106,7 @@ _cairo_surface_fallback_fill_rectangles (cairo_surface_t *surface,
|
|||
|
||||
cairo_private cairo_status_t
|
||||
_cairo_surface_fallback_composite_trapezoids (cairo_operator_t op,
|
||||
cairo_pattern_t *pattern,
|
||||
const cairo_pattern_t *pattern,
|
||||
cairo_surface_t *dst,
|
||||
cairo_antialias_t antialias,
|
||||
int src_x,
|
||||
|
|
|
|||
|
|
@ -103,7 +103,7 @@ _fallback_fini (fallback_state_t *state)
|
|||
|
||||
typedef cairo_status_t (*cairo_draw_func_t) (void *closure,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *src,
|
||||
const cairo_pattern_t *src,
|
||||
cairo_surface_t *dst,
|
||||
int dst_x,
|
||||
int dst_y,
|
||||
|
|
@ -156,7 +156,7 @@ _create_composite_mask_pattern (cairo_surface_pattern_t *mask_pattern,
|
|||
static cairo_status_t
|
||||
_clip_and_composite_with_mask (cairo_clip_t *clip,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *src,
|
||||
const cairo_pattern_t *src,
|
||||
cairo_draw_func_t draw_func,
|
||||
void *draw_closure,
|
||||
cairo_surface_t *dst,
|
||||
|
|
@ -190,7 +190,7 @@ _clip_and_composite_with_mask (cairo_clip_t *clip,
|
|||
static cairo_status_t
|
||||
_clip_and_composite_combine (cairo_clip_t *clip,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *src,
|
||||
const cairo_pattern_t *src,
|
||||
cairo_draw_func_t draw_func,
|
||||
void *draw_closure,
|
||||
cairo_surface_t *dst,
|
||||
|
|
@ -278,7 +278,7 @@ _clip_and_composite_combine (cairo_clip_t *clip,
|
|||
*/
|
||||
static cairo_status_t
|
||||
_clip_and_composite_source (cairo_clip_t *clip,
|
||||
cairo_pattern_t *src,
|
||||
const cairo_pattern_t *src,
|
||||
cairo_draw_func_t draw_func,
|
||||
void *draw_closure,
|
||||
cairo_surface_t *dst,
|
||||
|
|
@ -352,7 +352,7 @@ _cairo_rectangle_empty (const cairo_rectangle_int_t *rect)
|
|||
static cairo_status_t
|
||||
_clip_and_composite (cairo_clip_t *clip,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *src,
|
||||
const cairo_pattern_t *src,
|
||||
cairo_draw_func_t draw_func,
|
||||
void *draw_closure,
|
||||
cairo_surface_t *dst,
|
||||
|
|
@ -408,7 +408,7 @@ _clip_and_composite (cairo_clip_t *clip,
|
|||
*/
|
||||
static cairo_status_t
|
||||
_composite_trap_region (cairo_clip_t *clip,
|
||||
cairo_pattern_t *src,
|
||||
const cairo_pattern_t *src,
|
||||
cairo_operator_t op,
|
||||
cairo_surface_t *dst,
|
||||
cairo_region_t *trap_region,
|
||||
|
|
@ -480,7 +480,7 @@ typedef struct {
|
|||
static cairo_status_t
|
||||
_composite_traps_draw_func (void *closure,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *src,
|
||||
const cairo_pattern_t *src,
|
||||
cairo_surface_t *dst,
|
||||
int dst_x,
|
||||
int dst_y,
|
||||
|
|
@ -512,7 +512,7 @@ _composite_traps_draw_func (void *closure,
|
|||
|
||||
/* Warning: This call modifies the coordinates of traps */
|
||||
static cairo_status_t
|
||||
_clip_and_composite_trapezoids (cairo_pattern_t *src,
|
||||
_clip_and_composite_trapezoids (const cairo_pattern_t *src,
|
||||
cairo_operator_t op,
|
||||
cairo_surface_t *dst,
|
||||
cairo_traps_t *traps,
|
||||
|
|
@ -671,9 +671,9 @@ out:
|
|||
}
|
||||
|
||||
cairo_status_t
|
||||
_cairo_surface_fallback_paint (cairo_surface_t *surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source)
|
||||
_cairo_surface_fallback_paint (cairo_surface_t *surface,
|
||||
cairo_operator_t op,
|
||||
const cairo_pattern_t *source)
|
||||
{
|
||||
cairo_status_t status;
|
||||
cairo_rectangle_int_t extents;
|
||||
|
|
@ -686,6 +686,7 @@ _cairo_surface_fallback_paint (cairo_surface_t *surface,
|
|||
|
||||
if (_cairo_operator_bounded_by_source (op)) {
|
||||
cairo_rectangle_int_t source_extents;
|
||||
|
||||
status = _cairo_pattern_get_extents (source, &source_extents);
|
||||
if (status)
|
||||
return status;
|
||||
|
|
@ -717,7 +718,7 @@ _cairo_surface_fallback_paint (cairo_surface_t *surface,
|
|||
static cairo_status_t
|
||||
_cairo_surface_mask_draw_func (void *closure,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *src,
|
||||
const cairo_pattern_t *src,
|
||||
cairo_surface_t *dst,
|
||||
int dst_x,
|
||||
int dst_y,
|
||||
|
|
@ -744,8 +745,8 @@ _cairo_surface_mask_draw_func (void *closure,
|
|||
cairo_status_t
|
||||
_cairo_surface_fallback_mask (cairo_surface_t *surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source,
|
||||
cairo_pattern_t *mask)
|
||||
const cairo_pattern_t *source,
|
||||
const cairo_pattern_t *mask)
|
||||
{
|
||||
cairo_status_t status;
|
||||
cairo_rectangle_int_t extents, source_extents, mask_extents;
|
||||
|
|
@ -779,7 +780,7 @@ _cairo_surface_fallback_mask (cairo_surface_t *surface,
|
|||
status = _clip_and_composite (surface->clip, op,
|
||||
source,
|
||||
_cairo_surface_mask_draw_func,
|
||||
mask,
|
||||
(void *) mask,
|
||||
surface,
|
||||
&extents);
|
||||
|
||||
|
|
@ -789,7 +790,7 @@ _cairo_surface_fallback_mask (cairo_surface_t *surface,
|
|||
cairo_status_t
|
||||
_cairo_surface_fallback_stroke (cairo_surface_t *surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source,
|
||||
const cairo_pattern_t *source,
|
||||
cairo_path_fixed_t *path,
|
||||
cairo_stroke_style_t *stroke_style,
|
||||
cairo_matrix_t *ctm,
|
||||
|
|
@ -852,7 +853,7 @@ FAIL:
|
|||
cairo_status_t
|
||||
_cairo_surface_fallback_fill (cairo_surface_t *surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source,
|
||||
const cairo_pattern_t *source,
|
||||
cairo_path_fixed_t *path,
|
||||
cairo_fill_rule_t fill_rule,
|
||||
double tolerance,
|
||||
|
|
@ -920,7 +921,7 @@ typedef struct {
|
|||
static cairo_status_t
|
||||
_cairo_surface_old_show_glyphs_draw_func (void *closure,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *src,
|
||||
const cairo_pattern_t *src,
|
||||
cairo_surface_t *dst,
|
||||
int dst_x,
|
||||
int dst_y,
|
||||
|
|
@ -981,7 +982,7 @@ _cairo_surface_old_show_glyphs_draw_func (void *closure
|
|||
cairo_status_t
|
||||
_cairo_surface_fallback_show_glyphs (cairo_surface_t *surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source,
|
||||
const cairo_pattern_t *source,
|
||||
cairo_glyph_t *glyphs,
|
||||
int num_glyphs,
|
||||
cairo_scaled_font_t *scaled_font)
|
||||
|
|
@ -1080,18 +1081,18 @@ _cairo_surface_fallback_snapshot (cairo_surface_t *surface)
|
|||
}
|
||||
|
||||
cairo_status_t
|
||||
_cairo_surface_fallback_composite (cairo_operator_t op,
|
||||
cairo_pattern_t *src,
|
||||
cairo_pattern_t *mask,
|
||||
cairo_surface_t *dst,
|
||||
int src_x,
|
||||
int src_y,
|
||||
int mask_x,
|
||||
int mask_y,
|
||||
int dst_x,
|
||||
int dst_y,
|
||||
unsigned int width,
|
||||
unsigned int height)
|
||||
_cairo_surface_fallback_composite (cairo_operator_t op,
|
||||
const cairo_pattern_t *src,
|
||||
const cairo_pattern_t *mask,
|
||||
cairo_surface_t *dst,
|
||||
int src_x,
|
||||
int src_y,
|
||||
int mask_x,
|
||||
int mask_y,
|
||||
int dst_x,
|
||||
int dst_y,
|
||||
unsigned int width,
|
||||
unsigned int height)
|
||||
{
|
||||
fallback_state_t state;
|
||||
cairo_status_t status;
|
||||
|
|
@ -1197,7 +1198,7 @@ _cairo_surface_fallback_fill_rectangles (cairo_surface_t *surface,
|
|||
|
||||
cairo_status_t
|
||||
_cairo_surface_fallback_composite_trapezoids (cairo_operator_t op,
|
||||
cairo_pattern_t *pattern,
|
||||
const cairo_pattern_t *pattern,
|
||||
cairo_surface_t *dst,
|
||||
cairo_antialias_t antialias,
|
||||
int src_x,
|
||||
|
|
|
|||
|
|
@ -89,9 +89,9 @@ static DEFINE_NIL_SURFACE(CAIRO_STATUS_WRITE_ERROR, _cairo_surface_nil_write_err
|
|||
static DEFINE_NIL_SURFACE(CAIRO_STATUS_INVALID_STRIDE, _cairo_surface_nil_invalid_stride);
|
||||
|
||||
static cairo_status_t
|
||||
_cairo_surface_copy_pattern_for_destination (const cairo_pattern_t *pattern,
|
||||
_cairo_surface_copy_pattern_for_destination (const cairo_pattern_t **pattern,
|
||||
cairo_surface_t *destination,
|
||||
cairo_pattern_t **pattern_out);
|
||||
cairo_pattern_t *pattern_copy);
|
||||
|
||||
/**
|
||||
* _cairo_surface_set_error:
|
||||
|
|
@ -337,7 +337,7 @@ _cairo_surface_create_similar_solid (cairo_surface_t *other,
|
|||
|
||||
cairo_surface_t *
|
||||
_cairo_surface_create_solid_pattern_surface (cairo_surface_t *other,
|
||||
cairo_solid_pattern_t *solid_pattern)
|
||||
const cairo_solid_pattern_t *solid_pattern)
|
||||
{
|
||||
cairo_surface_t *surface;
|
||||
|
||||
|
|
@ -357,7 +357,7 @@ _cairo_surface_create_solid_pattern_surface (cairo_surface_t *other,
|
|||
cairo_int_status_t
|
||||
_cairo_surface_repaint_solid_pattern_surface (cairo_surface_t *other,
|
||||
cairo_surface_t *solid_surface,
|
||||
cairo_solid_pattern_t *solid_pattern)
|
||||
const cairo_solid_pattern_t *solid_pattern)
|
||||
{
|
||||
if (other->backend->create_solid_pattern_surface)
|
||||
/* Solid pattern surface for this backend are not trivial to make.
|
||||
|
|
@ -1254,8 +1254,8 @@ _cairo_surface_is_similar (cairo_surface_t *surface_a,
|
|||
|
||||
cairo_status_t
|
||||
_cairo_surface_composite (cairo_operator_t op,
|
||||
cairo_pattern_t *src,
|
||||
cairo_pattern_t *mask,
|
||||
const cairo_pattern_t *src,
|
||||
const cairo_pattern_t *mask,
|
||||
cairo_surface_t *dst,
|
||||
int src_x,
|
||||
int src_y,
|
||||
|
|
@ -1469,69 +1469,78 @@ _cairo_surface_fill_rectangles (cairo_surface_t *surface,
|
|||
cairo_status_t
|
||||
_cairo_surface_paint (cairo_surface_t *surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source)
|
||||
const cairo_pattern_t *source)
|
||||
{
|
||||
cairo_status_t status;
|
||||
cairo_pattern_t *dev_source;
|
||||
cairo_pattern_union_t dev_source;
|
||||
|
||||
if (surface->status)
|
||||
return surface->status;
|
||||
|
||||
assert (! surface->is_snapshot);
|
||||
|
||||
status = _cairo_surface_copy_pattern_for_destination (source, surface, &dev_source);
|
||||
status = _cairo_surface_copy_pattern_for_destination (&source,
|
||||
surface,
|
||||
&dev_source.base);
|
||||
if (status)
|
||||
return _cairo_surface_set_error (surface, status);
|
||||
|
||||
if (surface->backend->paint) {
|
||||
status = surface->backend->paint (surface, op, dev_source);
|
||||
status = surface->backend->paint (surface, op, source);
|
||||
if (status != CAIRO_INT_STATUS_UNSUPPORTED)
|
||||
goto FINISH;
|
||||
}
|
||||
|
||||
status = _cairo_surface_fallback_paint (surface, op, dev_source);
|
||||
status = _cairo_surface_fallback_paint (surface, op, source);
|
||||
|
||||
FINISH:
|
||||
cairo_pattern_destroy (dev_source);
|
||||
if (source == &dev_source.base)
|
||||
_cairo_pattern_fini (&dev_source.base);
|
||||
|
||||
return _cairo_surface_set_error (surface, status);
|
||||
}
|
||||
|
||||
cairo_status_t
|
||||
_cairo_surface_mask (cairo_surface_t *surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source,
|
||||
cairo_pattern_t *mask)
|
||||
_cairo_surface_mask (cairo_surface_t *surface,
|
||||
cairo_operator_t op,
|
||||
const cairo_pattern_t *source,
|
||||
const cairo_pattern_t *mask)
|
||||
{
|
||||
cairo_status_t status;
|
||||
cairo_pattern_t *dev_source;
|
||||
cairo_pattern_t *dev_mask;
|
||||
cairo_pattern_union_t dev_source;
|
||||
cairo_pattern_union_t dev_mask;
|
||||
|
||||
if (surface->status)
|
||||
return surface->status;
|
||||
|
||||
assert (! surface->is_snapshot);
|
||||
|
||||
status = _cairo_surface_copy_pattern_for_destination (source, surface, &dev_source);
|
||||
status = _cairo_surface_copy_pattern_for_destination (&source,
|
||||
surface,
|
||||
&dev_source.base);
|
||||
if (status)
|
||||
goto FINISH;
|
||||
|
||||
status = _cairo_surface_copy_pattern_for_destination (mask, surface, &dev_mask);
|
||||
status = _cairo_surface_copy_pattern_for_destination (&mask,
|
||||
surface,
|
||||
&dev_mask.base);
|
||||
if (status)
|
||||
goto CLEANUP_SOURCE;
|
||||
|
||||
if (surface->backend->mask) {
|
||||
status = surface->backend->mask (surface, op, dev_source, dev_mask);
|
||||
status = surface->backend->mask (surface, op, source, mask);
|
||||
if (status != CAIRO_INT_STATUS_UNSUPPORTED)
|
||||
goto CLEANUP_MASK;
|
||||
}
|
||||
|
||||
status = _cairo_surface_fallback_mask (surface, op, dev_source, dev_mask);
|
||||
status = _cairo_surface_fallback_mask (surface, op, source, mask);
|
||||
|
||||
CLEANUP_MASK:
|
||||
cairo_pattern_destroy (dev_mask);
|
||||
if (mask == &dev_mask.base)
|
||||
_cairo_pattern_fini (&dev_mask.base);
|
||||
CLEANUP_SOURCE:
|
||||
cairo_pattern_destroy (dev_source);
|
||||
if (source == &dev_source.base)
|
||||
_cairo_pattern_fini (&dev_source.base);
|
||||
FINISH:
|
||||
|
||||
return _cairo_surface_set_error (surface, status);
|
||||
|
|
@ -1540,13 +1549,13 @@ _cairo_surface_mask (cairo_surface_t *surface,
|
|||
cairo_status_t
|
||||
_cairo_surface_fill_stroke (cairo_surface_t *surface,
|
||||
cairo_operator_t fill_op,
|
||||
cairo_pattern_t *fill_source,
|
||||
const cairo_pattern_t *fill_source,
|
||||
cairo_fill_rule_t fill_rule,
|
||||
double fill_tolerance,
|
||||
cairo_antialias_t fill_antialias,
|
||||
cairo_path_fixed_t *path,
|
||||
cairo_operator_t stroke_op,
|
||||
cairo_pattern_t *stroke_source,
|
||||
const cairo_pattern_t *stroke_source,
|
||||
cairo_stroke_style_t *stroke_style,
|
||||
cairo_matrix_t *stroke_ctm,
|
||||
cairo_matrix_t *stroke_ctm_inverse,
|
||||
|
|
@ -1559,29 +1568,41 @@ _cairo_surface_fill_stroke (cairo_surface_t *surface,
|
|||
return surface->status;
|
||||
|
||||
if (surface->backend->fill_stroke) {
|
||||
cairo_pattern_t *dev_stroke_source;
|
||||
cairo_pattern_t *dev_fill_source;
|
||||
cairo_pattern_union_t dev_stroke_source;
|
||||
cairo_pattern_union_t dev_fill_source;
|
||||
cairo_matrix_t dev_ctm = *stroke_ctm;
|
||||
cairo_matrix_t dev_ctm_inverse = *stroke_ctm_inverse;
|
||||
|
||||
status = _cairo_surface_copy_pattern_for_destination (stroke_source, surface, &dev_stroke_source);
|
||||
status = _cairo_surface_copy_pattern_for_destination (&stroke_source,
|
||||
surface,
|
||||
&dev_stroke_source.base);
|
||||
if (status)
|
||||
return _cairo_surface_set_error (surface, status);
|
||||
|
||||
status = _cairo_surface_copy_pattern_for_destination (fill_source, surface, &dev_fill_source);
|
||||
status = _cairo_surface_copy_pattern_for_destination (&fill_source,
|
||||
surface,
|
||||
&dev_fill_source.base);
|
||||
if (status) {
|
||||
cairo_pattern_destroy (dev_stroke_source);
|
||||
if (stroke_source == &dev_stroke_source.base)
|
||||
_cairo_pattern_fini (&dev_stroke_source.base);
|
||||
|
||||
return _cairo_surface_set_error (surface, status);
|
||||
}
|
||||
|
||||
status = surface->backend->fill_stroke (surface, fill_op, dev_fill_source,
|
||||
fill_rule, fill_tolerance, fill_antialias,
|
||||
path, stroke_op, dev_stroke_source, stroke_style,
|
||||
&dev_ctm, &dev_ctm_inverse, stroke_tolerance,
|
||||
stroke_antialias);
|
||||
status = surface->backend->fill_stroke (surface,
|
||||
fill_op, fill_source, fill_rule,
|
||||
fill_tolerance, fill_antialias,
|
||||
path,
|
||||
stroke_op, stroke_source,
|
||||
stroke_style,
|
||||
&dev_ctm, &dev_ctm_inverse,
|
||||
stroke_tolerance, stroke_antialias);
|
||||
|
||||
cairo_pattern_destroy (dev_stroke_source);
|
||||
cairo_pattern_destroy (dev_fill_source);
|
||||
if (stroke_source == &dev_stroke_source.base)
|
||||
_cairo_pattern_fini (&dev_stroke_source.base);
|
||||
|
||||
if (fill_source == &dev_fill_source.base)
|
||||
_cairo_pattern_fini (&dev_fill_source.base);
|
||||
|
||||
if (status != CAIRO_INT_STATUS_UNSUPPORTED)
|
||||
return _cairo_surface_set_error (surface, status);
|
||||
|
|
@ -1604,7 +1625,7 @@ _cairo_surface_fill_stroke (cairo_surface_t *surface,
|
|||
cairo_status_t
|
||||
_cairo_surface_stroke (cairo_surface_t *surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source,
|
||||
const cairo_pattern_t *source,
|
||||
cairo_path_fixed_t *path,
|
||||
cairo_stroke_style_t *stroke_style,
|
||||
cairo_matrix_t *ctm,
|
||||
|
|
@ -1613,7 +1634,7 @@ _cairo_surface_stroke (cairo_surface_t *surface,
|
|||
cairo_antialias_t antialias)
|
||||
{
|
||||
cairo_status_t status;
|
||||
cairo_pattern_t *dev_source;
|
||||
cairo_pattern_union_t dev_source;
|
||||
cairo_path_fixed_t *dev_path = path;
|
||||
cairo_path_fixed_t real_dev_path;
|
||||
cairo_matrix_t dev_ctm = *ctm;
|
||||
|
|
@ -1624,12 +1645,14 @@ _cairo_surface_stroke (cairo_surface_t *surface,
|
|||
|
||||
assert (! surface->is_snapshot);
|
||||
|
||||
status = _cairo_surface_copy_pattern_for_destination (source, surface, &dev_source);
|
||||
status = _cairo_surface_copy_pattern_for_destination (&source,
|
||||
surface,
|
||||
&dev_source.base);
|
||||
if (status)
|
||||
return _cairo_surface_set_error (surface, status);
|
||||
|
||||
if (surface->backend->stroke) {
|
||||
status = surface->backend->stroke (surface, op, dev_source,
|
||||
status = surface->backend->stroke (surface, op, source,
|
||||
path, stroke_style,
|
||||
&dev_ctm, &dev_ctm_inverse,
|
||||
tolerance, antialias);
|
||||
|
|
@ -1638,7 +1661,7 @@ _cairo_surface_stroke (cairo_surface_t *surface,
|
|||
goto FINISH;
|
||||
}
|
||||
|
||||
status = _cairo_surface_fallback_stroke (surface, op, dev_source,
|
||||
status = _cairo_surface_fallback_stroke (surface, op, source,
|
||||
path, stroke_style,
|
||||
&dev_ctm, &dev_ctm_inverse,
|
||||
tolerance, antialias);
|
||||
|
|
@ -1646,7 +1669,9 @@ _cairo_surface_stroke (cairo_surface_t *surface,
|
|||
FINISH:
|
||||
if (dev_path == &real_dev_path)
|
||||
_cairo_path_fixed_fini (&real_dev_path);
|
||||
cairo_pattern_destroy (dev_source);
|
||||
|
||||
if (source == &dev_source.base)
|
||||
_cairo_pattern_fini (&dev_source.base);
|
||||
|
||||
return _cairo_surface_set_error (surface, status);
|
||||
}
|
||||
|
|
@ -1654,26 +1679,28 @@ _cairo_surface_stroke (cairo_surface_t *surface,
|
|||
cairo_status_t
|
||||
_cairo_surface_fill (cairo_surface_t *surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source,
|
||||
const cairo_pattern_t *source,
|
||||
cairo_path_fixed_t *path,
|
||||
cairo_fill_rule_t fill_rule,
|
||||
double tolerance,
|
||||
cairo_antialias_t antialias)
|
||||
{
|
||||
cairo_status_t status;
|
||||
cairo_pattern_t *dev_source;
|
||||
cairo_pattern_union_t dev_source;
|
||||
|
||||
if (surface->status)
|
||||
return surface->status;
|
||||
|
||||
assert (! surface->is_snapshot);
|
||||
|
||||
status = _cairo_surface_copy_pattern_for_destination (source, surface, &dev_source);
|
||||
status = _cairo_surface_copy_pattern_for_destination (&source,
|
||||
surface,
|
||||
&dev_source.base);
|
||||
if (status)
|
||||
return _cairo_surface_set_error (surface, status);
|
||||
|
||||
if (surface->backend->fill) {
|
||||
status = surface->backend->fill (surface, op, dev_source,
|
||||
status = surface->backend->fill (surface, op, source,
|
||||
path, fill_rule,
|
||||
tolerance, antialias);
|
||||
|
||||
|
|
@ -1681,19 +1708,20 @@ _cairo_surface_fill (cairo_surface_t *surface,
|
|||
goto FINISH;
|
||||
}
|
||||
|
||||
status = _cairo_surface_fallback_fill (surface, op, dev_source,
|
||||
status = _cairo_surface_fallback_fill (surface, op, source,
|
||||
path, fill_rule,
|
||||
tolerance, antialias);
|
||||
|
||||
FINISH:
|
||||
cairo_pattern_destroy (dev_source);
|
||||
if (source == &dev_source.base)
|
||||
_cairo_pattern_fini (&dev_source.base);
|
||||
|
||||
return _cairo_surface_set_error (surface, status);
|
||||
}
|
||||
|
||||
cairo_status_t
|
||||
_cairo_surface_composite_trapezoids (cairo_operator_t op,
|
||||
cairo_pattern_t *pattern,
|
||||
const cairo_pattern_t *pattern,
|
||||
cairo_surface_t *dst,
|
||||
cairo_antialias_t antialias,
|
||||
int src_x,
|
||||
|
|
@ -2218,7 +2246,7 @@ slim_hidden_def (cairo_surface_has_show_text_glyphs);
|
|||
cairo_status_t
|
||||
_cairo_surface_show_text_glyphs (cairo_surface_t *surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source,
|
||||
const cairo_pattern_t *source,
|
||||
const char *utf8,
|
||||
int utf8_len,
|
||||
cairo_glyph_t *glyphs,
|
||||
|
|
@ -2230,7 +2258,7 @@ _cairo_surface_show_text_glyphs (cairo_surface_t *surface,
|
|||
{
|
||||
cairo_status_t status;
|
||||
cairo_scaled_font_t *dev_scaled_font = scaled_font;
|
||||
cairo_pattern_t *dev_source;
|
||||
cairo_pattern_union_t dev_source;
|
||||
|
||||
if (surface->status)
|
||||
return surface->status;
|
||||
|
|
@ -2240,9 +2268,9 @@ _cairo_surface_show_text_glyphs (cairo_surface_t *surface,
|
|||
if (!num_glyphs && !utf8_len)
|
||||
return CAIRO_STATUS_SUCCESS;
|
||||
|
||||
status = _cairo_surface_copy_pattern_for_destination (source,
|
||||
status = _cairo_surface_copy_pattern_for_destination (&source,
|
||||
surface,
|
||||
&dev_source);
|
||||
&dev_source.base);
|
||||
if (status)
|
||||
return _cairo_surface_set_error (surface, status);
|
||||
|
||||
|
|
@ -2263,7 +2291,9 @@ _cairo_surface_show_text_glyphs (cairo_surface_t *surface,
|
|||
}
|
||||
status = cairo_scaled_font_status (dev_scaled_font);
|
||||
if (status) {
|
||||
cairo_pattern_destroy (dev_source);
|
||||
if (source == &dev_source.base)
|
||||
_cairo_pattern_fini (&dev_source.base);
|
||||
|
||||
return _cairo_surface_set_error (surface, status);
|
||||
}
|
||||
|
||||
|
|
@ -2275,7 +2305,8 @@ _cairo_surface_show_text_glyphs (cairo_surface_t *surface,
|
|||
/* A real show_text_glyphs call. Try show_text_glyphs backend
|
||||
* method first */
|
||||
if (surface->backend->show_text_glyphs) {
|
||||
status = surface->backend->show_text_glyphs (surface, op, dev_source,
|
||||
status = surface->backend->show_text_glyphs (surface, op,
|
||||
source,
|
||||
utf8, utf8_len,
|
||||
glyphs, num_glyphs,
|
||||
clusters, num_clusters, cluster_flags,
|
||||
|
|
@ -2283,7 +2314,8 @@ _cairo_surface_show_text_glyphs (cairo_surface_t *surface,
|
|||
}
|
||||
if (status == CAIRO_INT_STATUS_UNSUPPORTED && surface->backend->show_glyphs) {
|
||||
int remaining_glyphs = num_glyphs;
|
||||
status = surface->backend->show_glyphs (surface, op, dev_source,
|
||||
status = surface->backend->show_glyphs (surface, op,
|
||||
source,
|
||||
glyphs, num_glyphs,
|
||||
dev_scaled_font,
|
||||
&remaining_glyphs);
|
||||
|
|
@ -2296,7 +2328,8 @@ _cairo_surface_show_text_glyphs (cairo_surface_t *surface,
|
|||
/* A mere show_glyphs call. Try show_glyphs backend method first */
|
||||
if (surface->backend->show_glyphs) {
|
||||
int remaining_glyphs = num_glyphs;
|
||||
status = surface->backend->show_glyphs (surface, op, dev_source,
|
||||
status = surface->backend->show_glyphs (surface, op,
|
||||
source,
|
||||
glyphs, num_glyphs,
|
||||
dev_scaled_font,
|
||||
&remaining_glyphs);
|
||||
|
|
@ -2313,7 +2346,8 @@ _cairo_surface_show_text_glyphs (cairo_surface_t *surface,
|
|||
* implies that UTF-8 is not NULL, unless the text is
|
||||
* zero-length).
|
||||
*/
|
||||
status = surface->backend->show_text_glyphs (surface, op, dev_source,
|
||||
status = surface->backend->show_text_glyphs (surface, op,
|
||||
source,
|
||||
utf8, utf8_len,
|
||||
glyphs, num_glyphs,
|
||||
clusters, num_clusters, cluster_flags,
|
||||
|
|
@ -2322,14 +2356,16 @@ _cairo_surface_show_text_glyphs (cairo_surface_t *surface,
|
|||
}
|
||||
|
||||
if (status == CAIRO_INT_STATUS_UNSUPPORTED)
|
||||
status = _cairo_surface_fallback_show_glyphs (surface, op, dev_source,
|
||||
status = _cairo_surface_fallback_show_glyphs (surface, op,
|
||||
source,
|
||||
glyphs, num_glyphs,
|
||||
dev_scaled_font);
|
||||
|
||||
if (dev_scaled_font != scaled_font)
|
||||
cairo_scaled_font_destroy (dev_scaled_font);
|
||||
|
||||
cairo_pattern_destroy (dev_source);
|
||||
if (source == &dev_source.base)
|
||||
_cairo_pattern_fini (&dev_source.base);
|
||||
|
||||
return _cairo_surface_set_error (surface, status);
|
||||
}
|
||||
|
|
@ -2342,7 +2378,7 @@ _cairo_surface_show_text_glyphs (cairo_surface_t *surface,
|
|||
cairo_status_t
|
||||
_cairo_surface_old_show_glyphs (cairo_scaled_font_t *scaled_font,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *pattern,
|
||||
const cairo_pattern_t *pattern,
|
||||
cairo_surface_t *dst,
|
||||
int source_x,
|
||||
int source_y,
|
||||
|
|
@ -2594,27 +2630,30 @@ _cairo_surface_composite_shape_fixup_unbounded (cairo_surface_t *dst,
|
|||
* _cairo_surface_copy_pattern_for_destination
|
||||
* @pattern: the pattern to copy
|
||||
* @destination: the destination surface for which the pattern is being copied
|
||||
* @pattern_out: the location to hold the copy
|
||||
* @pattern_copy: the location to hold the copy
|
||||
*
|
||||
* Copies the given pattern, taking into account device scale and offsets
|
||||
* of the destination surface.
|
||||
*/
|
||||
static cairo_status_t
|
||||
_cairo_surface_copy_pattern_for_destination (const cairo_pattern_t *pattern,
|
||||
_cairo_surface_copy_pattern_for_destination (const cairo_pattern_t **pattern,
|
||||
cairo_surface_t *destination,
|
||||
cairo_pattern_t **pattern_out)
|
||||
cairo_pattern_t *pattern_copy)
|
||||
{
|
||||
cairo_status_t status;
|
||||
|
||||
status = _cairo_pattern_create_copy (pattern_out, pattern);
|
||||
if (! _cairo_surface_has_device_transform (destination))
|
||||
return CAIRO_STATUS_SUCCESS;
|
||||
|
||||
status = _cairo_pattern_init_copy (pattern_copy, *pattern);
|
||||
if (status)
|
||||
return status;
|
||||
|
||||
if (_cairo_surface_has_device_transform (destination)) {
|
||||
_cairo_pattern_transform (*pattern_out,
|
||||
&destination->device_transform_inverse);
|
||||
}
|
||||
_cairo_pattern_transform (pattern_copy,
|
||||
&destination->device_transform_inverse);
|
||||
|
||||
|
||||
*pattern = pattern_copy;
|
||||
return CAIRO_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1757,7 +1757,7 @@ _cairo_svg_surface_emit_radial_pattern (cairo_svg_surface_t *surface,
|
|||
|
||||
static cairo_status_t
|
||||
_cairo_svg_surface_emit_pattern (cairo_svg_surface_t *surface,
|
||||
cairo_pattern_t *pattern,
|
||||
const cairo_pattern_t *pattern,
|
||||
cairo_output_stream_t *output,
|
||||
cairo_bool_t is_stroke,
|
||||
const cairo_matrix_t *parent_matrix)
|
||||
|
|
@ -1783,12 +1783,12 @@ _cairo_svg_surface_emit_pattern (cairo_svg_surface_t *surface,
|
|||
}
|
||||
|
||||
static cairo_status_t
|
||||
_cairo_svg_surface_emit_fill_style (cairo_output_stream_t *output,
|
||||
cairo_svg_surface_t *surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source,
|
||||
cairo_fill_rule_t fill_rule,
|
||||
cairo_matrix_t *parent_matrix)
|
||||
_cairo_svg_surface_emit_fill_style (cairo_output_stream_t *output,
|
||||
cairo_svg_surface_t *surface,
|
||||
cairo_operator_t op,
|
||||
const cairo_pattern_t *source,
|
||||
cairo_fill_rule_t fill_rule,
|
||||
cairo_matrix_t *parent_matrix)
|
||||
{
|
||||
_cairo_output_stream_printf (output,
|
||||
"fill-rule:%s;",
|
||||
|
|
@ -1799,12 +1799,12 @@ _cairo_svg_surface_emit_fill_style (cairo_output_stream_t *output,
|
|||
}
|
||||
|
||||
static cairo_status_t
|
||||
_cairo_svg_surface_emit_stroke_style (cairo_output_stream_t *output,
|
||||
cairo_svg_surface_t *surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source,
|
||||
cairo_stroke_style_t *stroke_style,
|
||||
cairo_matrix_t *parent_matrix)
|
||||
_cairo_svg_surface_emit_stroke_style (cairo_output_stream_t *output,
|
||||
cairo_svg_surface_t *surface,
|
||||
cairo_operator_t op,
|
||||
const cairo_pattern_t *source,
|
||||
cairo_stroke_style_t *stroke_style,
|
||||
cairo_matrix_t *parent_matrix)
|
||||
{
|
||||
cairo_status_t status;
|
||||
const char *line_cap, *line_join;
|
||||
|
|
@ -1879,13 +1879,13 @@ _cairo_svg_surface_emit_stroke_style (cairo_output_stream_t *output,
|
|||
static cairo_int_status_t
|
||||
_cairo_svg_surface_fill_stroke (void *abstract_surface,
|
||||
cairo_operator_t fill_op,
|
||||
cairo_pattern_t *fill_source,
|
||||
const cairo_pattern_t *fill_source,
|
||||
cairo_fill_rule_t fill_rule,
|
||||
double fill_tolerance,
|
||||
cairo_antialias_t fill_antialias,
|
||||
cairo_path_fixed_t *path,
|
||||
cairo_operator_t stroke_op,
|
||||
cairo_pattern_t *stroke_source,
|
||||
const cairo_pattern_t *stroke_source,
|
||||
cairo_stroke_style_t *stroke_style,
|
||||
cairo_matrix_t *stroke_ctm,
|
||||
cairo_matrix_t *stroke_ctm_inverse,
|
||||
|
|
@ -1921,7 +1921,7 @@ _cairo_svg_surface_fill_stroke (void *abstract_surface,
|
|||
static cairo_int_status_t
|
||||
_cairo_svg_surface_fill (void *abstract_surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source,
|
||||
const cairo_pattern_t *source,
|
||||
cairo_path_fixed_t *path,
|
||||
cairo_fill_rule_t fill_rule,
|
||||
double tolerance,
|
||||
|
|
@ -1974,8 +1974,8 @@ static cairo_status_t
|
|||
_cairo_svg_surface_emit_paint (cairo_output_stream_t *output,
|
||||
cairo_svg_surface_t *surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source,
|
||||
cairo_pattern_t *mask_source,
|
||||
const cairo_pattern_t *source,
|
||||
const cairo_pattern_t *mask_source,
|
||||
const char *extra_attributes)
|
||||
{
|
||||
cairo_status_t status;
|
||||
|
|
@ -2013,7 +2013,7 @@ _cairo_svg_surface_emit_paint (cairo_output_stream_t *output,
|
|||
static cairo_int_status_t
|
||||
_cairo_svg_surface_paint (void *abstract_surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source)
|
||||
const cairo_pattern_t *source)
|
||||
{
|
||||
cairo_status_t status;
|
||||
cairo_svg_surface_t *surface = abstract_surface;
|
||||
|
|
@ -2066,8 +2066,8 @@ _cairo_svg_surface_paint (void *abstract_surface,
|
|||
static cairo_int_status_t
|
||||
_cairo_svg_surface_mask (void *abstract_surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source,
|
||||
cairo_pattern_t *mask)
|
||||
const cairo_pattern_t *source,
|
||||
const cairo_pattern_t *mask)
|
||||
{
|
||||
cairo_status_t status;
|
||||
cairo_svg_surface_t *surface = abstract_surface;
|
||||
|
|
@ -2095,8 +2095,8 @@ _cairo_svg_surface_mask (void *abstract_surface,
|
|||
assert (_cairo_svg_surface_operation_supported (surface, op, source));
|
||||
assert (_cairo_svg_surface_operation_supported (surface, CAIRO_OPERATOR_OVER, mask));
|
||||
|
||||
if (cairo_pattern_get_type (mask) == CAIRO_PATTERN_TYPE_SURFACE) {
|
||||
cairo_surface_pattern_t *surface_pattern = (cairo_surface_pattern_t*) mask;
|
||||
if (mask->type == CAIRO_PATTERN_TYPE_SURFACE) {
|
||||
const cairo_surface_pattern_t *surface_pattern = (const cairo_surface_pattern_t*) mask;
|
||||
cairo_content_t content = cairo_surface_get_content (surface_pattern->surface);
|
||||
if (content == CAIRO_CONTENT_ALPHA)
|
||||
discard_filter = TRUE;
|
||||
|
|
@ -2148,7 +2148,7 @@ _cairo_svg_surface_mask (void *abstract_surface,
|
|||
static cairo_int_status_t
|
||||
_cairo_svg_surface_stroke (void *abstract_dst,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source,
|
||||
const cairo_pattern_t *source,
|
||||
cairo_path_fixed_t *path,
|
||||
cairo_stroke_style_t *stroke_style,
|
||||
cairo_matrix_t *ctm,
|
||||
|
|
@ -2185,7 +2185,7 @@ _cairo_svg_surface_stroke (void *abstract_dst,
|
|||
static cairo_int_status_t
|
||||
_cairo_svg_surface_show_glyphs (void *abstract_surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *pattern,
|
||||
const cairo_pattern_t *pattern,
|
||||
cairo_glyph_t *glyphs,
|
||||
int num_glyphs,
|
||||
cairo_scaled_font_t *scaled_font,
|
||||
|
|
|
|||
|
|
@ -123,7 +123,7 @@ _cairo_type3_glyph_surface_emit_image (cairo_type3_glyph_surface_t *surface,
|
|||
static cairo_status_t
|
||||
_cairo_type3_glyph_surface_emit_image_pattern (cairo_type3_glyph_surface_t *surface,
|
||||
cairo_image_surface_t *image,
|
||||
cairo_matrix_t *pattern_matrix)
|
||||
const cairo_matrix_t *pattern_matrix)
|
||||
{
|
||||
cairo_matrix_t mat, upside_down;
|
||||
cairo_status_t status;
|
||||
|
|
@ -182,10 +182,10 @@ _cairo_type3_glyph_surface_intersect_clip_path (void *abstract_surface,
|
|||
static cairo_int_status_t
|
||||
_cairo_type3_glyph_surface_paint (void *abstract_surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source)
|
||||
const cairo_pattern_t *source)
|
||||
{
|
||||
cairo_type3_glyph_surface_t *surface = abstract_surface;
|
||||
cairo_surface_pattern_t *pattern;
|
||||
const cairo_surface_pattern_t *pattern;
|
||||
cairo_image_surface_t *image;
|
||||
void *image_extra;
|
||||
cairo_status_t status;
|
||||
|
|
@ -193,7 +193,7 @@ _cairo_type3_glyph_surface_paint (void *abstract_surface,
|
|||
if (source->type != CAIRO_PATTERN_TYPE_SURFACE)
|
||||
return CAIRO_INT_STATUS_IMAGE_FALLBACK;
|
||||
|
||||
pattern = (cairo_surface_pattern_t *) source;
|
||||
pattern = (const cairo_surface_pattern_t *) source;
|
||||
status = _cairo_surface_acquire_source_image (pattern->surface, &image, &image_extra);
|
||||
if (status)
|
||||
goto fail;
|
||||
|
|
@ -211,8 +211,8 @@ fail:
|
|||
static cairo_int_status_t
|
||||
_cairo_type3_glyph_surface_mask (void *abstract_surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source,
|
||||
cairo_pattern_t *mask)
|
||||
const cairo_pattern_t *source,
|
||||
const cairo_pattern_t *mask)
|
||||
{
|
||||
return _cairo_type3_glyph_surface_paint (abstract_surface, op, mask);
|
||||
}
|
||||
|
|
@ -220,7 +220,7 @@ _cairo_type3_glyph_surface_mask (void *abstract_surface,
|
|||
static cairo_int_status_t
|
||||
_cairo_type3_glyph_surface_stroke (void *abstract_surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source,
|
||||
const cairo_pattern_t *source,
|
||||
cairo_path_fixed_t *path,
|
||||
cairo_stroke_style_t *style,
|
||||
cairo_matrix_t *ctm,
|
||||
|
|
@ -240,7 +240,7 @@ _cairo_type3_glyph_surface_stroke (void *abstract_surface,
|
|||
static cairo_int_status_t
|
||||
_cairo_type3_glyph_surface_fill (void *abstract_surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source,
|
||||
const cairo_pattern_t *source,
|
||||
cairo_path_fixed_t *path,
|
||||
cairo_fill_rule_t fill_rule,
|
||||
double tolerance,
|
||||
|
|
@ -259,7 +259,7 @@ _cairo_type3_glyph_surface_fill (void *abstract_surface,
|
|||
static cairo_int_status_t
|
||||
_cairo_type3_glyph_surface_show_glyphs (void *abstract_surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source,
|
||||
const cairo_pattern_t *source,
|
||||
cairo_glyph_t *glyphs,
|
||||
int num_glyphs,
|
||||
cairo_scaled_font_t *scaled_font,
|
||||
|
|
|
|||
|
|
@ -1359,19 +1359,19 @@ _cairo_win32_scaled_font_glyph_init (void *abstract_font,
|
|||
}
|
||||
|
||||
static cairo_int_status_t
|
||||
_cairo_win32_scaled_font_show_glyphs (void *abstract_font,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *pattern,
|
||||
cairo_surface_t *generic_surface,
|
||||
int source_x,
|
||||
int source_y,
|
||||
int dest_x,
|
||||
int dest_y,
|
||||
unsigned int width,
|
||||
unsigned int height,
|
||||
cairo_glyph_t *glyphs,
|
||||
int num_glyphs,
|
||||
int *remaining_glyphs)
|
||||
_cairo_win32_scaled_font_show_glyphs (void *abstract_font,
|
||||
cairo_operator_t op,
|
||||
const cairo_pattern_t *pattern,
|
||||
cairo_surface_t *generic_surface,
|
||||
int source_x,
|
||||
int source_y,
|
||||
int dest_x,
|
||||
int dest_y,
|
||||
unsigned int width,
|
||||
unsigned int height,
|
||||
cairo_glyph_t *glyphs,
|
||||
int num_glyphs,
|
||||
int *remaining_glyphs)
|
||||
{
|
||||
cairo_win32_scaled_font_t *scaled_font = abstract_font;
|
||||
cairo_win32_surface_t *surface = (cairo_win32_surface_t *)generic_surface;
|
||||
|
|
|
|||
|
|
@ -294,7 +294,7 @@ _cairo_win32_printing_surface_flatten_transparency (cairo_win32_surface_t *surfa
|
|||
|
||||
static cairo_status_t
|
||||
_cairo_win32_printing_surface_select_solid_brush (cairo_win32_surface_t *surface,
|
||||
cairo_pattern_t *source)
|
||||
const cairo_pattern_t *source)
|
||||
{
|
||||
cairo_solid_pattern_t *pattern = (cairo_solid_pattern_t *) source;
|
||||
COLORREF color;
|
||||
|
|
@ -337,7 +337,7 @@ _cairo_win32_printing_surface_get_ctm_clip_box (cairo_win32_surface_t *surface,
|
|||
|
||||
static cairo_status_t
|
||||
_cairo_win32_printing_surface_paint_solid_pattern (cairo_win32_surface_t *surface,
|
||||
cairo_pattern_t *pattern)
|
||||
const cairo_pattern_t *pattern)
|
||||
{
|
||||
RECT clip;
|
||||
cairo_status_t status;
|
||||
|
|
@ -350,7 +350,7 @@ _cairo_win32_printing_surface_paint_solid_pattern (cairo_win32_surface_t *surfac
|
|||
FillRect (surface->dc, &clip, surface->brush);
|
||||
_cairo_win32_printing_surface_done_solid_brush (surface);
|
||||
|
||||
return 0;
|
||||
return CAIRO_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static cairo_status_t
|
||||
|
|
@ -411,7 +411,9 @@ _cairo_win32_printing_surface_paint_meta_pattern (cairo_win32_surface_t *surfa
|
|||
surface->content = CAIRO_CONTENT_COLOR;
|
||||
_cairo_pattern_init_solid (&black, CAIRO_COLOR_BLACK, CAIRO_CONTENT_COLOR);
|
||||
source = (cairo_pattern_t*) &black;
|
||||
_cairo_win32_printing_surface_paint_solid_pattern (surface, source);
|
||||
status = _cairo_win32_printing_surface_paint_solid_pattern (surface, source);
|
||||
if (status)
|
||||
return status;
|
||||
}
|
||||
|
||||
for (y_tile = top; y_tile < bottom; y_tile++) {
|
||||
|
|
@ -490,7 +492,6 @@ _cairo_win32_printing_surface_paint_image_pattern (cairo_win32_surface_t *surf
|
|||
{
|
||||
cairo_status_t status;
|
||||
cairo_extend_t extend;
|
||||
cairo_surface_attributes_t pat_attr;
|
||||
cairo_image_surface_t *image;
|
||||
void *image_extra;
|
||||
cairo_surface_t *opaque_surface;
|
||||
|
|
@ -820,7 +821,7 @@ _cairo_win32_printing_surface_paint_linear_pattern (cairo_win32_surface_t *surfa
|
|||
|
||||
static cairo_int_status_t
|
||||
_cairo_win32_printing_surface_paint_pattern (cairo_win32_surface_t *surface,
|
||||
cairo_pattern_t *pattern)
|
||||
const cairo_pattern_t *pattern)
|
||||
{
|
||||
cairo_status_t status;
|
||||
|
||||
|
|
@ -1034,9 +1035,9 @@ _cairo_win32_printing_surface_get_font_options (void *abstract_
|
|||
}
|
||||
|
||||
static cairo_int_status_t
|
||||
_cairo_win32_printing_surface_paint (void *abstract_surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source)
|
||||
_cairo_win32_printing_surface_paint (void *abstract_surface,
|
||||
cairo_operator_t op,
|
||||
const cairo_pattern_t *source)
|
||||
{
|
||||
cairo_win32_surface_t *surface = abstract_surface;
|
||||
cairo_solid_pattern_t clear;
|
||||
|
|
@ -1105,15 +1106,15 @@ _cairo_matrix_factor_out_scale (cairo_matrix_t *m, double *scale)
|
|||
}
|
||||
|
||||
static cairo_int_status_t
|
||||
_cairo_win32_printing_surface_stroke (void *abstract_surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source,
|
||||
cairo_path_fixed_t *path,
|
||||
cairo_stroke_style_t *style,
|
||||
cairo_matrix_t *stroke_ctm,
|
||||
cairo_matrix_t *stroke_ctm_inverse,
|
||||
double tolerance,
|
||||
cairo_antialias_t antialias)
|
||||
_cairo_win32_printing_surface_stroke (void *abstract_surface,
|
||||
cairo_operator_t op,
|
||||
const cairo_pattern_t *source,
|
||||
cairo_path_fixed_t *path,
|
||||
cairo_stroke_style_t *style,
|
||||
cairo_matrix_t *stroke_ctm,
|
||||
cairo_matrix_t *stroke_ctm_inverse,
|
||||
double tolerance,
|
||||
cairo_antialias_t antialias)
|
||||
{
|
||||
cairo_win32_surface_t *surface = abstract_surface;
|
||||
cairo_int_status_t status;
|
||||
|
|
@ -1229,12 +1230,12 @@ _cairo_win32_printing_surface_stroke (void *abstract_surface,
|
|||
|
||||
static cairo_int_status_t
|
||||
_cairo_win32_printing_surface_fill (void *abstract_surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source,
|
||||
cairo_path_fixed_t *path,
|
||||
cairo_fill_rule_t fill_rule,
|
||||
double tolerance,
|
||||
cairo_antialias_t antialias)
|
||||
cairo_operator_t op,
|
||||
const cairo_pattern_t *source,
|
||||
cairo_path_fixed_t *path,
|
||||
cairo_fill_rule_t fill_rule,
|
||||
double tolerance,
|
||||
cairo_antialias_t antialias)
|
||||
{
|
||||
cairo_win32_surface_t *surface = abstract_surface;
|
||||
cairo_int_status_t status;
|
||||
|
|
@ -1289,7 +1290,7 @@ _cairo_win32_printing_surface_fill (void *abstract_surface,
|
|||
static cairo_int_status_t
|
||||
_cairo_win32_printing_surface_show_glyphs (void *abstract_surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source,
|
||||
const cairo_pattern_t *source,
|
||||
cairo_glyph_t *glyphs,
|
||||
int num_glyphs,
|
||||
cairo_scaled_font_t *scaled_font,
|
||||
|
|
|
|||
|
|
@ -141,7 +141,7 @@ _cairo_win32_flags_for_dc (HDC dc);
|
|||
cairo_int_status_t
|
||||
_cairo_win32_surface_show_glyphs (void *surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source,
|
||||
const cairo_pattern_t *source,
|
||||
cairo_glyph_t *glyphs,
|
||||
int num_glyphs,
|
||||
cairo_scaled_font_t *scaled_font,
|
||||
|
|
|
|||
|
|
@ -874,8 +874,8 @@ _cairo_win32_surface_composite_inner (cairo_win32_surface_t *src,
|
|||
|
||||
static cairo_int_status_t
|
||||
_cairo_win32_surface_composite (cairo_operator_t op,
|
||||
cairo_pattern_t *pattern,
|
||||
cairo_pattern_t *mask_pattern,
|
||||
const cairo_pattern_t *pattern,
|
||||
const cairo_pattern_t *mask_pattern,
|
||||
void *abstract_dst,
|
||||
int src_x,
|
||||
int src_y,
|
||||
|
|
@ -1562,7 +1562,7 @@ _cairo_win32_surface_flush (void *abstract_surface)
|
|||
cairo_int_status_t
|
||||
_cairo_win32_surface_show_glyphs (void *surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source,
|
||||
const cairo_pattern_t *source,
|
||||
cairo_glyph_t *glyphs,
|
||||
int num_glyphs,
|
||||
cairo_scaled_font_t *scaled_font,
|
||||
|
|
|
|||
|
|
@ -948,10 +948,10 @@ typedef enum {
|
|||
* hit the bug and won't be able to use a core protocol fallback.
|
||||
*/
|
||||
static composite_operation_t
|
||||
_categorize_composite_operation (cairo_xcb_surface_t *dst,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *src_pattern,
|
||||
cairo_bool_t have_mask)
|
||||
_categorize_composite_operation (cairo_xcb_surface_t *dst,
|
||||
cairo_operator_t op,
|
||||
const cairo_pattern_t *src_pattern,
|
||||
cairo_bool_t have_mask)
|
||||
|
||||
{
|
||||
#if XXX_BUGGY_REPEAT
|
||||
|
|
@ -1088,8 +1088,8 @@ _render_operator (cairo_operator_t op)
|
|||
|
||||
static cairo_int_status_t
|
||||
_cairo_xcb_surface_composite (cairo_operator_t op,
|
||||
cairo_pattern_t *src_pattern,
|
||||
cairo_pattern_t *mask_pattern,
|
||||
const cairo_pattern_t *src_pattern,
|
||||
const cairo_pattern_t *mask_pattern,
|
||||
void *abstract_dst,
|
||||
int src_x,
|
||||
int src_y,
|
||||
|
|
@ -1377,7 +1377,7 @@ _create_trapezoid_mask (cairo_xcb_surface_t *dst,
|
|||
|
||||
static cairo_int_status_t
|
||||
_cairo_xcb_surface_composite_trapezoids (cairo_operator_t op,
|
||||
cairo_pattern_t *pattern,
|
||||
const cairo_pattern_t *pattern,
|
||||
void *abstract_dst,
|
||||
cairo_antialias_t antialias,
|
||||
int src_x,
|
||||
|
|
@ -1622,13 +1622,13 @@ _cairo_xcb_surface_scaled_glyph_fini (cairo_scaled_glyph_t *scaled_glyph,
|
|||
cairo_scaled_font_t *scaled_font);
|
||||
|
||||
static cairo_int_status_t
|
||||
_cairo_xcb_surface_show_glyphs (void *abstract_dst,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *src_pattern,
|
||||
cairo_glyph_t *glyphs,
|
||||
int num_glyphs,
|
||||
cairo_scaled_font_t *scaled_font,
|
||||
int *remaining_glyphs);
|
||||
_cairo_xcb_surface_show_glyphs (void *abstract_dst,
|
||||
cairo_operator_t op,
|
||||
const cairo_pattern_t *src_pattern,
|
||||
cairo_glyph_t *glyphs,
|
||||
int num_glyphs,
|
||||
cairo_scaled_font_t *scaled_font,
|
||||
int *remaining_glyphs);
|
||||
|
||||
static cairo_bool_t
|
||||
_cairo_xcb_surface_is_similar (void *surface_a,
|
||||
|
|
@ -2420,13 +2420,13 @@ _cairo_xcb_surface_emit_glyphs (cairo_xcb_surface_t *dst,
|
|||
}
|
||||
|
||||
static cairo_int_status_t
|
||||
_cairo_xcb_surface_show_glyphs (void *abstract_dst,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *src_pattern,
|
||||
cairo_glyph_t *glyphs,
|
||||
int num_glyphs,
|
||||
cairo_scaled_font_t *scaled_font,
|
||||
int *remaining_glyphs)
|
||||
_cairo_xcb_surface_show_glyphs (void *abstract_dst,
|
||||
cairo_operator_t op,
|
||||
const cairo_pattern_t *src_pattern,
|
||||
cairo_glyph_t *glyphs,
|
||||
int num_glyphs,
|
||||
cairo_scaled_font_t *scaled_font,
|
||||
int *remaining_glyphs)
|
||||
{
|
||||
cairo_int_status_t status = CAIRO_STATUS_SUCCESS;
|
||||
cairo_xcb_surface_t *dst = abstract_dst;
|
||||
|
|
|
|||
|
|
@ -82,7 +82,7 @@ _native_byte_order_lsb (void);
|
|||
static cairo_int_status_t
|
||||
_cairo_xlib_surface_show_glyphs (void *abstract_dst,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *src_pattern,
|
||||
const cairo_pattern_t *src_pattern,
|
||||
cairo_glyph_t *glyphs,
|
||||
int num_glyphs,
|
||||
cairo_scaled_font_t *scaled_font,
|
||||
|
|
@ -1229,7 +1229,7 @@ _cairo_xlib_surface_clone_similar (void *abstract_surface,
|
|||
|
||||
static cairo_surface_t *
|
||||
_cairo_xlib_surface_create_solid_pattern_surface (void *abstract_surface,
|
||||
cairo_solid_pattern_t *solid_pattern)
|
||||
const cairo_solid_pattern_t *solid_pattern)
|
||||
{
|
||||
/* This function's only responsibility is to create a proper surface
|
||||
* for when XRender is not available. The proper surface is a xlib
|
||||
|
|
@ -1531,7 +1531,7 @@ typedef enum {
|
|||
static composite_operation_t
|
||||
_categorize_composite_operation (cairo_xlib_surface_t *dst,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *src_pattern,
|
||||
const cairo_pattern_t *src_pattern,
|
||||
cairo_bool_t have_mask)
|
||||
|
||||
{
|
||||
|
|
@ -1680,8 +1680,8 @@ _render_operator (cairo_operator_t op)
|
|||
|
||||
static cairo_int_status_t
|
||||
_cairo_xlib_surface_composite (cairo_operator_t op,
|
||||
cairo_pattern_t *src_pattern,
|
||||
cairo_pattern_t *mask_pattern,
|
||||
const cairo_pattern_t *src_pattern,
|
||||
const cairo_pattern_t *mask_pattern,
|
||||
void *abstract_dst,
|
||||
int src_x,
|
||||
int src_y,
|
||||
|
|
@ -2071,7 +2071,7 @@ _create_trapezoid_mask (cairo_xlib_surface_t *dst,
|
|||
|
||||
static cairo_int_status_t
|
||||
_cairo_xlib_surface_composite_trapezoids (cairo_operator_t op,
|
||||
cairo_pattern_t *pattern,
|
||||
const cairo_pattern_t *pattern,
|
||||
void *abstract_dst,
|
||||
cairo_antialias_t antialias,
|
||||
int src_x,
|
||||
|
|
@ -3945,7 +3945,7 @@ _cairo_xlib_surface_owns_font (cairo_xlib_surface_t *dst,
|
|||
static cairo_int_status_t
|
||||
_cairo_xlib_surface_show_glyphs (void *abstract_dst,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *src_pattern,
|
||||
const cairo_pattern_t *src_pattern,
|
||||
cairo_glyph_t *glyphs,
|
||||
int num_glyphs,
|
||||
cairo_scaled_font_t *scaled_font,
|
||||
|
|
|
|||
|
|
@ -453,7 +453,7 @@ struct _cairo_scaled_font_backend {
|
|||
cairo_warn cairo_int_status_t
|
||||
(*show_glyphs) (void *scaled_font,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *pattern,
|
||||
const cairo_pattern_t *pattern,
|
||||
cairo_surface_t *surface,
|
||||
int source_x,
|
||||
int source_y,
|
||||
|
|
@ -584,8 +584,8 @@ struct _cairo_surface_backend {
|
|||
/* XXX: dst should be the first argument for consistency */
|
||||
cairo_warn cairo_int_status_t
|
||||
(*composite) (cairo_operator_t op,
|
||||
cairo_pattern_t *src,
|
||||
cairo_pattern_t *mask,
|
||||
const cairo_pattern_t *src,
|
||||
const cairo_pattern_t *mask,
|
||||
void *dst,
|
||||
int src_x,
|
||||
int src_y,
|
||||
|
|
@ -606,7 +606,7 @@ struct _cairo_surface_backend {
|
|||
/* XXX: dst should be the first argument for consistency */
|
||||
cairo_warn cairo_int_status_t
|
||||
(*composite_trapezoids) (cairo_operator_t op,
|
||||
cairo_pattern_t *pattern,
|
||||
const cairo_pattern_t *pattern,
|
||||
void *dst,
|
||||
cairo_antialias_t antialias,
|
||||
int src_x,
|
||||
|
|
@ -688,7 +688,7 @@ struct _cairo_surface_backend {
|
|||
cairo_warn cairo_int_status_t
|
||||
(*old_show_glyphs) (cairo_scaled_font_t *font,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *pattern,
|
||||
const cairo_pattern_t *pattern,
|
||||
void *surface,
|
||||
int source_x,
|
||||
int source_y,
|
||||
|
|
@ -726,18 +726,18 @@ struct _cairo_surface_backend {
|
|||
cairo_warn cairo_int_status_t
|
||||
(*paint) (void *surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source);
|
||||
const cairo_pattern_t *source);
|
||||
|
||||
cairo_warn cairo_int_status_t
|
||||
(*mask) (void *surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source,
|
||||
cairo_pattern_t *mask);
|
||||
const cairo_pattern_t *source,
|
||||
const cairo_pattern_t *mask);
|
||||
|
||||
cairo_warn cairo_int_status_t
|
||||
(*stroke) (void *surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source,
|
||||
const cairo_pattern_t *source,
|
||||
cairo_path_fixed_t *path,
|
||||
cairo_stroke_style_t *style,
|
||||
cairo_matrix_t *ctm,
|
||||
|
|
@ -748,7 +748,7 @@ struct _cairo_surface_backend {
|
|||
cairo_warn cairo_int_status_t
|
||||
(*fill) (void *surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source,
|
||||
const cairo_pattern_t *source,
|
||||
cairo_path_fixed_t *path,
|
||||
cairo_fill_rule_t fill_rule,
|
||||
double tolerance,
|
||||
|
|
@ -757,7 +757,7 @@ struct _cairo_surface_backend {
|
|||
cairo_warn cairo_int_status_t
|
||||
(*show_glyphs) (void *surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source,
|
||||
const cairo_pattern_t *source,
|
||||
cairo_glyph_t *glyphs,
|
||||
int num_glyphs,
|
||||
cairo_scaled_font_t *scaled_font,
|
||||
|
|
@ -777,13 +777,13 @@ struct _cairo_surface_backend {
|
|||
cairo_warn cairo_int_status_t
|
||||
(*fill_stroke) (void *surface,
|
||||
cairo_operator_t fill_op,
|
||||
cairo_pattern_t *fill_source,
|
||||
const cairo_pattern_t *fill_source,
|
||||
cairo_fill_rule_t fill_rule,
|
||||
double fill_tolerance,
|
||||
cairo_antialias_t fill_antialias,
|
||||
cairo_path_fixed_t *path,
|
||||
cairo_operator_t stroke_op,
|
||||
cairo_pattern_t *stroke_source,
|
||||
const cairo_pattern_t *stroke_source,
|
||||
cairo_stroke_style_t *stroke_style,
|
||||
cairo_matrix_t *stroke_ctm,
|
||||
cairo_matrix_t *stroke_ctm_inverse,
|
||||
|
|
@ -792,8 +792,8 @@ struct _cairo_surface_backend {
|
|||
|
||||
cairo_surface_t *
|
||||
(*create_solid_pattern_surface)
|
||||
(void *surface,
|
||||
cairo_solid_pattern_t *solid_pattern);
|
||||
(void *surface,
|
||||
const cairo_solid_pattern_t *solid_pattern);
|
||||
|
||||
cairo_bool_t
|
||||
(*has_show_text_glyphs) (void *surface);
|
||||
|
|
@ -801,7 +801,7 @@ struct _cairo_surface_backend {
|
|||
cairo_warn cairo_int_status_t
|
||||
(*show_text_glyphs) (void *surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source,
|
||||
const cairo_pattern_t *source,
|
||||
const char *utf8,
|
||||
int utf8_len,
|
||||
cairo_glyph_t *glyphs,
|
||||
|
|
@ -1581,7 +1581,7 @@ _cairo_scaled_font_glyph_device_extents (cairo_scaled_font_t *scaled_font,
|
|||
cairo_private cairo_status_t
|
||||
_cairo_scaled_font_show_glyphs (cairo_scaled_font_t *scaled_font,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source,
|
||||
const cairo_pattern_t *source,
|
||||
cairo_surface_t *surface,
|
||||
int source_x,
|
||||
int source_y,
|
||||
|
|
@ -1676,12 +1676,12 @@ _cairo_surface_create_similar_solid (cairo_surface_t *other,
|
|||
|
||||
cairo_private cairo_surface_t *
|
||||
_cairo_surface_create_solid_pattern_surface (cairo_surface_t *other,
|
||||
cairo_solid_pattern_t *solid_pattern);
|
||||
const cairo_solid_pattern_t *solid_pattern);
|
||||
|
||||
cairo_private cairo_int_status_t
|
||||
_cairo_surface_repaint_solid_pattern_surface (cairo_surface_t *other,
|
||||
cairo_surface_t *solid_surface,
|
||||
cairo_solid_pattern_t *solid_pattern);
|
||||
const cairo_solid_pattern_t *solid_pattern);
|
||||
|
||||
cairo_private void
|
||||
_cairo_surface_init (cairo_surface_t *surface,
|
||||
|
|
@ -1697,8 +1697,8 @@ _cairo_surface_get_clip_mode (cairo_surface_t *surface);
|
|||
|
||||
cairo_private cairo_status_t
|
||||
_cairo_surface_composite (cairo_operator_t op,
|
||||
cairo_pattern_t *src,
|
||||
cairo_pattern_t *mask,
|
||||
const cairo_pattern_t *src,
|
||||
const cairo_pattern_t *mask,
|
||||
cairo_surface_t *dst,
|
||||
int src_x,
|
||||
int src_y,
|
||||
|
|
@ -1734,24 +1734,24 @@ _cairo_surface_fill_rectangles (cairo_surface_t *surface,
|
|||
cairo_private cairo_status_t
|
||||
_cairo_surface_paint (cairo_surface_t *surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source);
|
||||
const cairo_pattern_t *source);
|
||||
|
||||
cairo_private cairo_status_t
|
||||
_cairo_surface_mask (cairo_surface_t *surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source,
|
||||
cairo_pattern_t *mask);
|
||||
const cairo_pattern_t *source,
|
||||
const cairo_pattern_t *mask);
|
||||
|
||||
cairo_private cairo_status_t
|
||||
_cairo_surface_fill_stroke (cairo_surface_t *surface,
|
||||
cairo_operator_t fill_op,
|
||||
cairo_pattern_t *fill_source,
|
||||
const cairo_pattern_t *fill_source,
|
||||
cairo_fill_rule_t fill_rule,
|
||||
double fill_tolerance,
|
||||
cairo_antialias_t fill_antialias,
|
||||
cairo_path_fixed_t *path,
|
||||
cairo_operator_t stroke_op,
|
||||
cairo_pattern_t *stroke_source,
|
||||
const cairo_pattern_t *stroke_source,
|
||||
cairo_stroke_style_t *stroke_style,
|
||||
cairo_matrix_t *stroke_ctm,
|
||||
cairo_matrix_t *stroke_ctm_inverse,
|
||||
|
|
@ -1761,7 +1761,7 @@ _cairo_surface_fill_stroke (cairo_surface_t *surface,
|
|||
cairo_private cairo_status_t
|
||||
_cairo_surface_stroke (cairo_surface_t *surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source,
|
||||
const cairo_pattern_t *source,
|
||||
cairo_path_fixed_t *path,
|
||||
cairo_stroke_style_t *style,
|
||||
cairo_matrix_t *ctm,
|
||||
|
|
@ -1772,7 +1772,7 @@ _cairo_surface_stroke (cairo_surface_t *surface,
|
|||
cairo_private cairo_status_t
|
||||
_cairo_surface_fill (cairo_surface_t *surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source,
|
||||
const cairo_pattern_t *source,
|
||||
cairo_path_fixed_t *path,
|
||||
cairo_fill_rule_t fill_rule,
|
||||
double tolerance,
|
||||
|
|
@ -1781,7 +1781,7 @@ _cairo_surface_fill (cairo_surface_t *surface,
|
|||
cairo_private cairo_status_t
|
||||
_cairo_surface_show_text_glyphs (cairo_surface_t *surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source,
|
||||
const cairo_pattern_t *source,
|
||||
const char *utf8,
|
||||
int utf8_len,
|
||||
cairo_glyph_t *glyphs,
|
||||
|
|
@ -1793,7 +1793,7 @@ _cairo_surface_show_text_glyphs (cairo_surface_t *surface,
|
|||
|
||||
cairo_private cairo_status_t
|
||||
_cairo_surface_composite_trapezoids (cairo_operator_t op,
|
||||
cairo_pattern_t *pattern,
|
||||
const cairo_pattern_t *pattern,
|
||||
cairo_surface_t *dst,
|
||||
cairo_antialias_t antialias,
|
||||
int src_x,
|
||||
|
|
@ -1885,7 +1885,7 @@ _cairo_surface_get_extents (cairo_surface_t *surface,
|
|||
cairo_private cairo_status_t
|
||||
_cairo_surface_old_show_glyphs (cairo_scaled_font_t *scaled_font,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *pattern,
|
||||
const cairo_pattern_t *pattern,
|
||||
cairo_surface_t *surface,
|
||||
int source_x,
|
||||
int source_y,
|
||||
|
|
@ -2318,7 +2318,7 @@ cairo_private cairo_bool_t
|
|||
_cairo_pattern_is_opaque (const cairo_pattern_t *abstract_pattern);
|
||||
|
||||
cairo_private cairo_int_status_t
|
||||
_cairo_pattern_acquire_surface (cairo_pattern_t *pattern,
|
||||
_cairo_pattern_acquire_surface (const cairo_pattern_t *pattern,
|
||||
cairo_surface_t *dst,
|
||||
int x,
|
||||
int y,
|
||||
|
|
@ -2328,13 +2328,13 @@ _cairo_pattern_acquire_surface (cairo_pattern_t *pattern,
|
|||
cairo_surface_attributes_t *attributes);
|
||||
|
||||
cairo_private void
|
||||
_cairo_pattern_release_surface (cairo_pattern_t *pattern,
|
||||
_cairo_pattern_release_surface (const cairo_pattern_t *pattern,
|
||||
cairo_surface_t *surface,
|
||||
cairo_surface_attributes_t *attributes);
|
||||
|
||||
cairo_private cairo_int_status_t
|
||||
_cairo_pattern_acquire_surfaces (cairo_pattern_t *src,
|
||||
cairo_pattern_t *mask,
|
||||
_cairo_pattern_acquire_surfaces (const cairo_pattern_t *src,
|
||||
const cairo_pattern_t *mask,
|
||||
cairo_surface_t *dst,
|
||||
int src_x,
|
||||
int src_y,
|
||||
|
|
@ -2348,8 +2348,8 @@ _cairo_pattern_acquire_surfaces (cairo_pattern_t *src,
|
|||
cairo_surface_attributes_t *mask_attributes);
|
||||
|
||||
cairo_private cairo_status_t
|
||||
_cairo_pattern_get_extents (cairo_pattern_t *pattern,
|
||||
cairo_rectangle_int_t *extents);
|
||||
_cairo_pattern_get_extents (const cairo_pattern_t *pattern,
|
||||
cairo_rectangle_int_t *extents);
|
||||
|
||||
cairo_private void
|
||||
_cairo_pattern_reset_static_data (void);
|
||||
|
|
|
|||
|
|
@ -194,7 +194,7 @@ _test_meta_surface_get_extents (void *abstract_surface,
|
|||
static cairo_int_status_t
|
||||
_test_meta_surface_paint (void *abstract_surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source)
|
||||
const cairo_pattern_t *source)
|
||||
{
|
||||
test_meta_surface_t *surface = abstract_surface;
|
||||
|
||||
|
|
@ -206,8 +206,8 @@ _test_meta_surface_paint (void *abstract_surface,
|
|||
static cairo_int_status_t
|
||||
_test_meta_surface_mask (void *abstract_surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source,
|
||||
cairo_pattern_t *mask)
|
||||
const cairo_pattern_t *source,
|
||||
const cairo_pattern_t *mask)
|
||||
{
|
||||
test_meta_surface_t *surface = abstract_surface;
|
||||
|
||||
|
|
@ -217,15 +217,15 @@ _test_meta_surface_mask (void *abstract_surface,
|
|||
}
|
||||
|
||||
static cairo_int_status_t
|
||||
_test_meta_surface_stroke (void *abstract_surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source,
|
||||
cairo_path_fixed_t *path,
|
||||
cairo_stroke_style_t *style,
|
||||
cairo_matrix_t *ctm,
|
||||
cairo_matrix_t *ctm_inverse,
|
||||
double tolerance,
|
||||
cairo_antialias_t antialias)
|
||||
_test_meta_surface_stroke (void *abstract_surface,
|
||||
cairo_operator_t op,
|
||||
const cairo_pattern_t *source,
|
||||
cairo_path_fixed_t *path,
|
||||
cairo_stroke_style_t *style,
|
||||
cairo_matrix_t *ctm,
|
||||
cairo_matrix_t *ctm_inverse,
|
||||
double tolerance,
|
||||
cairo_antialias_t antialias)
|
||||
{
|
||||
test_meta_surface_t *surface = abstract_surface;
|
||||
|
||||
|
|
@ -240,7 +240,7 @@ _test_meta_surface_stroke (void *abstract_surface,
|
|||
static cairo_int_status_t
|
||||
_test_meta_surface_fill (void *abstract_surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source,
|
||||
const cairo_pattern_t *source,
|
||||
cairo_path_fixed_t *path,
|
||||
cairo_fill_rule_t fill_rule,
|
||||
double tolerance,
|
||||
|
|
@ -266,7 +266,7 @@ _test_meta_surface_has_show_text_glyphs (void *abstract_surface)
|
|||
static cairo_int_status_t
|
||||
_test_meta_surface_show_text_glyphs (void *abstract_surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source,
|
||||
const cairo_pattern_t *source,
|
||||
const char *utf8,
|
||||
int utf8_len,
|
||||
cairo_glyph_t *glyphs,
|
||||
|
|
|
|||
|
|
@ -169,7 +169,7 @@ _test_paginated_surface_get_extents (void *abstract_surface,
|
|||
static cairo_int_status_t
|
||||
_test_paginated_surface_paint (void *abstract_surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source)
|
||||
const cairo_pattern_t *source)
|
||||
{
|
||||
test_paginated_surface_t *surface = abstract_surface;
|
||||
|
||||
|
|
@ -182,8 +182,8 @@ _test_paginated_surface_paint (void *abstract_surface,
|
|||
static cairo_int_status_t
|
||||
_test_paginated_surface_mask (void *abstract_surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source,
|
||||
cairo_pattern_t *mask)
|
||||
const cairo_pattern_t *source,
|
||||
const cairo_pattern_t *mask)
|
||||
{
|
||||
test_paginated_surface_t *surface = abstract_surface;
|
||||
|
||||
|
|
@ -194,15 +194,15 @@ _test_paginated_surface_mask (void *abstract_surface,
|
|||
}
|
||||
|
||||
static cairo_int_status_t
|
||||
_test_paginated_surface_stroke (void *abstract_surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source,
|
||||
cairo_path_fixed_t *path,
|
||||
cairo_stroke_style_t *style,
|
||||
cairo_matrix_t *ctm,
|
||||
cairo_matrix_t *ctm_inverse,
|
||||
double tolerance,
|
||||
cairo_antialias_t antialias)
|
||||
_test_paginated_surface_stroke (void *abstract_surface,
|
||||
cairo_operator_t op,
|
||||
const cairo_pattern_t *source,
|
||||
cairo_path_fixed_t *path,
|
||||
cairo_stroke_style_t *style,
|
||||
cairo_matrix_t *ctm,
|
||||
cairo_matrix_t *ctm_inverse,
|
||||
double tolerance,
|
||||
cairo_antialias_t antialias)
|
||||
{
|
||||
test_paginated_surface_t *surface = abstract_surface;
|
||||
|
||||
|
|
@ -216,13 +216,13 @@ _test_paginated_surface_stroke (void *abstract_surface,
|
|||
}
|
||||
|
||||
static cairo_int_status_t
|
||||
_test_paginated_surface_fill (void *abstract_surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source,
|
||||
cairo_path_fixed_t *path,
|
||||
cairo_fill_rule_t fill_rule,
|
||||
double tolerance,
|
||||
cairo_antialias_t antialias)
|
||||
_test_paginated_surface_fill (void *abstract_surface,
|
||||
cairo_operator_t op,
|
||||
const cairo_pattern_t *source,
|
||||
cairo_path_fixed_t *path,
|
||||
cairo_fill_rule_t fill_rule,
|
||||
double tolerance,
|
||||
cairo_antialias_t antialias)
|
||||
{
|
||||
test_paginated_surface_t *surface = abstract_surface;
|
||||
|
||||
|
|
@ -245,7 +245,7 @@ _test_paginated_surface_has_show_text_glyphs (void *abstract_surface)
|
|||
static cairo_int_status_t
|
||||
_test_paginated_surface_show_text_glyphs (void *abstract_surface,
|
||||
cairo_operator_t op,
|
||||
cairo_pattern_t *source,
|
||||
const cairo_pattern_t *source,
|
||||
const char *utf8,
|
||||
int utf8_len,
|
||||
cairo_glyph_t *glyphs,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue