summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbulia byak <buliabyak@gmail.com>2007-03-02 14:56:25 +0000
committerbuliabyak <buliabyak@users.sourceforge.net>2007-03-02 14:56:25 +0000
commitbb2ce2565bca444893d5f2e27ba99962cb23922f (patch)
treee6bef279dd056f2810803931b6c08e7799238298
parentted's fix (diff)
downloadinkscape-bb2ce2565bca444893d5f2e27ba99962cb23922f.tar.gz
inkscape-bb2ce2565bca444893d5f2e27ba99962cb23922f.zip
patch the RGBA/BGRA incompatibility (until we're not using cairo throughout)
(bzr r2499)
-rw-r--r--src/display/nr-arena-glyphs.cpp4
-rw-r--r--src/display/nr-arena-shape.cpp7
2 files changed, 8 insertions, 3 deletions
diff --git a/src/display/nr-arena-glyphs.cpp b/src/display/nr-arena-glyphs.cpp
index b4bf81c8d..c8e51a19c 100644
--- a/src/display/nr-arena-glyphs.cpp
+++ b/src/display/nr-arena-glyphs.cpp
@@ -446,7 +446,9 @@ nr_arena_glyphs_group_render(cairo_t *ct, NRArenaItem *item, NRRectL *area, NRPi
return item->state;
guint32 rgba = item->arena->outlinecolor;
- cairo_set_source_rgba(ct, SP_RGBA32_R_F(rgba), SP_RGBA32_G_F(rgba), SP_RGBA32_B_F(rgba), SP_RGBA32_A_F(rgba));
+ // 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_set_tolerance(ct, 1.25); // low quality, but good enough for outline mode
for (child = group->children; child != NULL; child = child->next) {
diff --git a/src/display/nr-arena-shape.cpp b/src/display/nr-arena-shape.cpp
index bd6ca1df8..b8bfee05c 100644
--- a/src/display/nr-arena-shape.cpp
+++ b/src/display/nr-arena-shape.cpp
@@ -736,7 +736,9 @@ cairo_arena_shape_render_outline(cairo_t *ct, NRArenaItem *item, NR::Point shift
return item->state;
guint32 rgba = NR_ARENA_ITEM(shape)->arena->outlinecolor;
- cairo_set_source_rgba(ct, SP_RGBA32_R_F(rgba), SP_RGBA32_G_F(rgba), SP_RGBA32_B_F(rgba), SP_RGBA32_A_F(rgba));
+ // 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_set_line_width(ct, 0.5);
cairo_set_tolerance(ct, 1.25); // low quality, but good enough for outline mode
@@ -778,7 +780,8 @@ cairo_arena_shape_render_stroke(NRArenaItem *item, NRRectL *area, NRPixBlock *pb
shape->_stroke.opacity);
}
- // for some reason cairo needs bgra, not rgba
+ // 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));
float style_width = MAX(0.125, shape->_stroke.width * scale);