static cairo_int_status_t _cairo_xml_surface_mask (void *abstract_surface, cairo_operator_t op, const cairo_pattern_t *source, const cairo_pattern_t *mask, const cairo_clip_t *clip) { cairo_xml_surface_t *surface = abstract_surface; cairo_xml_t *xml = to_xml (surface); cairo_status_t status; _cairo_xml_printf (xml, "<mask>"); _cairo_xml_indent (xml, 2); _cairo_xml_emit_string (xml, "operator", _operator_to_string (op)); status = _cairo_xml_surface_emit_clip (surface, clip); if (unlikely (status)) return status; status = _cairo_xml_emit_pattern (xml, "source", source); if (unlikely (status)) return status; status = _cairo_xml_emit_pattern (xml, "mask", mask); if (unlikely (status)) return status; _cairo_xml_indent (xml, -2); _cairo_xml_printf (xml, "</mask>"); return CAIRO_STATUS_SUCCESS; }
static cairo_int_status_t _cairo_xml_surface_stroke (void *abstract_surface, cairo_operator_t op, const cairo_pattern_t *source, const cairo_path_fixed_t *path, const cairo_stroke_style_t *style, const cairo_matrix_t *ctm, const cairo_matrix_t *ctm_inverse, double tolerance, cairo_antialias_t antialias, const cairo_clip_t *clip) { cairo_xml_surface_t *surface = abstract_surface; cairo_xml_t *xml = to_xml (surface); cairo_status_t status; _cairo_xml_printf (xml, "<stroke>"); _cairo_xml_indent (xml, 2); _cairo_xml_emit_string (xml, "operator", _operator_to_string (op)); _cairo_xml_emit_double (xml, "line-width", style->line_width); _cairo_xml_emit_double (xml, "miter-limit", style->miter_limit); _cairo_xml_emit_string (xml, "line-cap", _line_cap_to_string (style->line_cap)); _cairo_xml_emit_string (xml, "line-join", _line_join_to_string (style->line_join)); status = _cairo_xml_surface_emit_clip (surface, clip); if (unlikely (status)) return status; status = _cairo_xml_emit_pattern (xml, "source", source); if (unlikely (status)) return status; if (style->num_dashes) { unsigned int i; _cairo_xml_printf_start (xml, "<dash offset='%f'>", style->dash_offset); for (i = 0; i < style->num_dashes; i++) _cairo_xml_printf_continue (xml, "%f ", style->dash[i]); _cairo_xml_printf_end (xml, "</dash>"); } _cairo_xml_emit_path (xml, path); _cairo_xml_emit_double (xml, "tolerance", tolerance); _cairo_xml_emit_string (xml, "antialias", _antialias_to_string (antialias)); _cairo_xml_emit_matrix (xml, ctm); _cairo_xml_indent (xml, -2); _cairo_xml_printf (xml, "</stroke>"); return CAIRO_STATUS_SUCCESS; }
static cairo_int_status_t _cairo_xml_surface_glyphs (void *abstract_surface, cairo_operator_t op, const cairo_pattern_t *source, cairo_glyph_t *glyphs, int num_glyphs, cairo_scaled_font_t *scaled_font, cairo_clip_t *clip, int *remaining_glyphs) { cairo_xml_surface_t *surface = abstract_surface; cairo_xml_t *xml = to_xml (surface); cairo_status_t status; int i; _cairo_xml_printf (xml, "<glyphs>"); _cairo_xml_indent (xml, 2); _cairo_xml_emit_string (xml, "operator", _operator_to_string (op)); status = _cairo_xml_surface_emit_clip (surface, clip); if (unlikely (status)) return status; status = _cairo_xml_emit_pattern (xml, "source", source); if (unlikely (status)) return status; status = _cairo_xml_emit_scaled_font (xml, scaled_font, glyphs, num_glyphs); if (unlikely (status)) return status; for (i = 0; i < num_glyphs; i++) { _cairo_xml_printf (xml, "<glyph index='%lu'>%f %f</glyph>", glyphs[i].index, glyphs[i].x, glyphs[i].y); } _cairo_xml_indent (xml, -2); _cairo_xml_printf (xml, "</glyphs>"); *remaining_glyphs = 0; return CAIRO_STATUS_SUCCESS; }
static cairo_int_status_t _cairo_xml_surface_fill (void *abstract_surface, cairo_operator_t op, const cairo_pattern_t *source, const cairo_path_fixed_t*path, cairo_fill_rule_t fill_rule, double tolerance, cairo_antialias_t antialias, const cairo_clip_t *clip) { cairo_xml_surface_t *surface = abstract_surface; cairo_xml_t *xml = to_xml (surface); cairo_status_t status; _cairo_xml_printf (xml, "<fill>"); _cairo_xml_indent (xml, 2); _cairo_xml_emit_string (xml, "operator", _operator_to_string (op)); status = _cairo_xml_surface_emit_clip (surface, clip); if (unlikely (status)) return status; status = _cairo_xml_emit_pattern (xml, "source", source); if (unlikely (status)) return status; _cairo_xml_emit_path (xml, path); _cairo_xml_emit_double (xml, "tolerance", tolerance); _cairo_xml_emit_string (xml, "antialias", _antialias_to_string (antialias)); _cairo_xml_emit_string (xml, "fill-rule", _fill_rule_to_string (fill_rule)); _cairo_xml_indent (xml, -2); _cairo_xml_printf (xml, "</fill>"); return CAIRO_STATUS_SUCCESS; }