diff options
author | Dom Lachowicz <domlachowicz@gmail.com> | 2007-08-20 19:07:14 +0000 |
---|---|---|
committer | Dom Lachowicz <doml@src.gnome.org> | 2007-08-20 19:07:14 +0000 |
commit | a759d44f384dfc1d50d1680eddba97c32cb7468f (patch) | |
tree | 7389179089ba0d66a6f7f8b39463fdaea2ecae48 /rsvg-cairo-draw.c | |
parent | 731dc4d5ffe979970bce1c3dc33e05ff98cfd3fa (diff) | |
download | librsvg-a759d44f384dfc1d50d1680eddba97c32cb7468f.tar.gz |
Basic support for SVG 1.1's text-rendering and shape-rendering properties
2007-08-20 Dom Lachowicz <domlachowicz@gmail.com>
* rsvg-styles.c: Basic support for SVG 1.1's text-rendering and shape-rendering properties (#464599)
http://www.w3.org/TR/SVG/painting.html#ShapeRenderingProperty
* rsvg-styles.h: Ditto
* rsvg-cairo-draw.c: Ditto
svn path=/trunk/; revision=1131
Diffstat (limited to 'rsvg-cairo-draw.c')
-rw-r--r-- | rsvg-cairo-draw.c | 33 |
1 files changed, 32 insertions, 1 deletions
diff --git a/rsvg-cairo-draw.c b/rsvg-cairo-draw.c index a3275dfe..89c49c6e 100644 --- a/rsvg-cairo-draw.c +++ b/rsvg-cairo-draw.c @@ -42,6 +42,32 @@ #include <pango/pangocairo.h> static void +_rsvg_cairo_set_shape_antialias (cairo_t * cr, ShapeRenderingProperty aa) +{ + if (SHAPE_RENDERING_AUTO == aa) + cairo_set_antialias (cr, CAIRO_ANTIALIAS_DEFAULT); + else if (SHAPE_RENDERING_OPTIMIZE_SPEED == aa) + cairo_set_antialias (cr, CAIRO_ANTIALIAS_NONE); + else if (SHAPE_RENDERING_CRISP_EDGES == aa) + cairo_set_antialias (cr, CAIRO_ANTIALIAS_DEFAULT); + else if (SHAPE_RENDERING_GEOMETRIC_PRECISION == aa) + cairo_set_antialias (cr, CAIRO_ANTIALIAS_DEFAULT); +} + +static void +_rsvg_cairo_set_text_antialias (cairo_t * cr, TextRenderingProperty aa) +{ + if (TEXT_RENDERING_AUTO == aa) + cairo_set_antialias (cr, CAIRO_ANTIALIAS_DEFAULT); + else if (TEXT_RENDERING_OPTIMIZE_SPEED == aa) + cairo_set_antialias (cr, CAIRO_ANTIALIAS_NONE); + else if (TEXT_RENDERING_OPTIMIZE_LEGIBILITY == aa) + cairo_set_antialias (cr, CAIRO_ANTIALIAS_DEFAULT); + else if (TEXT_RENDERING_GEOMETRIC_PRECISION == aa) + cairo_set_antialias (cr, CAIRO_ANTIALIAS_DEFAULT); +} + +static void _rsvg_cairo_set_operator (cairo_t * cr, RsvgCompOpType comp_op) { cairo_operator_t op; @@ -446,6 +472,9 @@ rsvg_cairo_render_pango_layout (RsvgDrawingCtx * ctx, PangoLayout * layout, doub RsvgBbox bbox; cairo_save (render->cr); + + _rsvg_cairo_set_text_antialias (render->cr, state->text_rendering_type); + _set_rsvg_affine (render->cr, state->affine); cairo_set_line_width (render->cr, _rsvg_css_normalize_length (&state->stroke_width, ctx, 'h')); @@ -513,6 +542,8 @@ rsvg_cairo_render_path (RsvgDrawingCtx * ctx, const RsvgBpathDef * bpath_def) cairo_save (cr); + _rsvg_cairo_set_shape_antialias (cr, state->shape_rendering_type); + _set_rsvg_affine (cr, state->affine); cairo_set_line_width (cr, _rsvg_css_normalize_length (&state->stroke_width, ctx, 'h')); @@ -710,7 +741,7 @@ rsvg_cairo_render_image (RsvgDrawingCtx * ctx, const GdkPixbuf * pixbuf, _rsvg_cairo_set_operator (render->cr, state->comp_op); -#if 0 +#if 1 cairo_set_source_surface (render->cr, surface, pixbuf_x, pixbuf_y); #else { |