diff options
Diffstat (limited to '')
| -rw-r--r-- | src/display/nr-arena-shape.cpp | 16 |
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); |
