diff --git a/src/agg_renderer.cpp b/src/agg_renderer.cpp index 230be4e52..092270582 100644 --- a/src/agg_renderer.cpp +++ b/src/agg_renderer.cpp @@ -184,6 +184,7 @@ namespace mapnik unsigned r=fill_.red(); unsigned g=fill_.green(); unsigned b=fill_.blue(); + unsigned a=fill_.alpha(); renderer ren(renb); ras_ptr->reset(); @@ -197,7 +198,7 @@ namespace mapnik ras_ptr->add_path(path); } } - ren.color(agg::rgba8(r, g, b, int(255 * sym.get_opacity()))); + ren.color(agg::rgba8(r, g, b, int(a * sym.get_opacity()))); agg::render_scanlines(*ras_ptr, sl, ren); } @@ -227,6 +228,7 @@ namespace mapnik unsigned r=fill_.red(); unsigned g=fill_.green(); unsigned b=fill_.blue(); + unsigned a=fill_.alpha(); renderer ren(renb); agg::scanline_u8 sl; @@ -275,7 +277,7 @@ namespace mapnik path_type faces_path (t_,*faces,prj_trans); ras_ptr->add_path(faces_path); - ren.color(agg::rgba8(int(r*0.8), int(g*0.8), int(b*0.8), int(255 * sym.get_opacity()))); + ren.color(agg::rgba8(int(r*0.8), int(g*0.8), int(b*0.8), int(a * sym.get_opacity()))); agg::render_scanlines(*ras_ptr, sl, ren); ras_ptr->reset(); @@ -308,7 +310,7 @@ namespace mapnik path_type roof_path (t_,*roof,prj_trans); ras_ptr->add_path(roof_path); - ren.color(agg::rgba8(r, g, b, int(255 * sym.get_opacity()))); + ren.color(agg::rgba8(r, g, b, int(a * sym.get_opacity()))); agg::render_scanlines(*ras_ptr, sl, ren); } } @@ -334,6 +336,7 @@ namespace mapnik unsigned r=col.red(); unsigned g=col.green(); unsigned b=col.blue(); + unsigned a=col.alpha(); renderer ren(renb); ras_ptr->reset(); agg::scanline_p8 sl; @@ -409,7 +412,7 @@ namespace mapnik } } } - ren.color(agg::rgba8(r, g, b, int(255*stroke_.get_opacity()))); + ren.color(agg::rgba8(r, g, b, int(a*stroke_.get_opacity()))); agg::render_scanlines(*ras_ptr, sl, ren); } @@ -693,6 +696,7 @@ namespace mapnik unsigned r = 0;// fill_.red(); unsigned g = 0; //fill_.green(); unsigned b = 255; //fill_.blue(); + unsigned a = 255; //fill_.alpha(); renderer ren(renb); for (unsigned i=0;iadd_path(marker); } } - ren.color(agg::rgba8(r, g, b, 255)); + ren.color(agg::rgba8(r, g, b, a)); agg::render_scanlines(*ras_ptr, sl, ren); } diff --git a/src/cairo_renderer.cpp b/src/cairo_renderer.cpp index 480989dac..6d34f1b67 100644 --- a/src/cairo_renderer.cpp +++ b/src/cairo_renderer.cpp @@ -206,7 +206,7 @@ namespace mapnik void set_color(color const &color, double opacity = 1.0) { - set_color(color.red(), color.green(), color.blue(), opacity); + set_color(color.red(), color.green(), color.blue(), color.alpha() * opacity / 255.0); } void set_color(int r, int g, int b, double opacity = 1.0) @@ -512,7 +512,7 @@ namespace mapnik if (bg) { cairo_context context(context_); - context.set_color(*bg, bg->alpha()/255.0); + context.set_color(*bg); context.paint(); } } @@ -647,7 +647,7 @@ namespace mapnik path_type faces_path(t_, *faces, prj_trans); context.set_color(int(fill.red() * 0.8), int(fill.green() * 0.8), - int(fill.blue() * 0.8), sym.get_opacity()); + int(fill.blue() * 0.8), fill.alpha() * sym.get_opacity() / 255.0); context.add_path(faces_path); context.fill();