summaryrefslogtreecommitdiffstats
path: root/src/display/nr-arena-shape.cpp
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/display/nr-arena-shape.cpp16
1 files changed, 6 insertions, 10 deletions
diff --git a/src/display/nr-arena-shape.cpp b/src/display/nr-arena-shape.cpp
index 550195c7c..a39e9e6fc 100644
--- a/src/display/nr-arena-shape.cpp
+++ b/src/display/nr-arena-shape.cpp
@@ -309,7 +309,7 @@ nr_arena_shape_update(NRArenaItem *item, NRRectL *area, NRGC *gc, guint state, g
// cairo outline rendering:
static unsigned int
-cairo_arena_shape_render_outline(cairo_t *ct, NRArenaItem *item, Geom::OptRect area)
+cairo_arena_shape_render_outline(cairo_t *ct, NRArenaItem *item, Geom::OptRect /*area*/)
{
NRArenaShape *shape = NR_ARENA_SHAPE(item);
@@ -317,16 +317,14 @@ cairo_arena_shape_render_outline(cairo_t *ct, NRArenaItem *item, Geom::OptRect a
return item->state;
guint32 rgba = NR_ARENA_ITEM(shape)->arena->outlinecolor;
- // FIXME: we use RGBA buffers but cairo writes BGRA (on i386), so we must cheat
- // by setting color channels in the "wrong" order
- cairo_set_source_rgba(ct, SP_RGBA32_B_F(rgba), SP_RGBA32_G_F(rgba), SP_RGBA32_R_F(rgba), SP_RGBA32_A_F(rgba));
+ cairo_save(ct);
+ ink_cairo_set_source_rgba32(ct, rgba);
+ ink_cairo_transform(ct, shape->ctm);
+ feed_pathvector_to_cairo (ct, shape->curve->get_pathvector());
+ cairo_restore(ct);
cairo_set_line_width(ct, 0.5);
cairo_set_tolerance(ct, 1.25); // low quality, but good enough for outline mode
- cairo_new_path(ct);
-
- feed_pathvector_to_cairo (ct, shape->curve->get_pathvector(), shape->ctm, area, true, 0);
-
cairo_stroke(ct);
return item->state;
@@ -362,7 +360,6 @@ nr_arena_shape_render(cairo_t *ct, NRArenaItem *item, NRRectL *area, NRPixBlock
bool has_stroke, has_fill;
// we assume the context has no path
cairo_save(ct);
- cairo_translate(ct, -area->x0, -area->y0);
ink_cairo_transform(ct, shape->ctm);
// update fill and stroke paints.
@@ -407,7 +404,6 @@ nr_arena_shape_clip(cairo_t *ct, NRArenaItem *item, NRRectL *area)
if (!shape->curve) return item->state;
cairo_save(ct);
- cairo_translate(ct, -area->x0, -area->y0);
ink_cairo_transform(ct, shape->ctm);
feed_pathvector_to_cairo(ct, shape->curve->get_pathvector());
cairo_restore(ct);