diff --git a/include/mapnik/text/renderer.hpp b/include/mapnik/text/renderer.hpp index cde65d2f0..380d15f8e 100644 --- a/include/mapnik/text/renderer.hpp +++ b/include/mapnik/text/renderer.hpp @@ -63,7 +63,9 @@ public: void render(glyph_positions_ptr pos); private: pixmap_type & pixmap_; - void render_halo(FT_Bitmap *bitmap, unsigned rgba, int x, int y, int halo_radius, double opacity); + void render_halo(FT_Bitmap *bitmap, unsigned rgba, int x, int y, + int halo_radius, double opacity, + composite_mode_e comp_op); }; template diff --git a/src/font_engine_freetype.cpp b/src/font_engine_freetype.cpp index b96b6798f..90650e8ee 100644 --- a/src/font_engine_freetype.cpp +++ b/src/font_engine_freetype.cpp @@ -21,8 +21,8 @@ *****************************************************************************/ // mapnik -#include #include +#include // boost #include diff --git a/src/text/renderer.cpp b/src/text/renderer.cpp index 5a2a56771..7dad3a0f5 100644 --- a/src/text/renderer.cpp +++ b/src/text/renderer.cpp @@ -145,7 +145,8 @@ void agg_text_renderer::render(glyph_positions_ptr pos) bit->left, height - bit->top, halo_radius, - format->text_opacity); + format->text_opacity, + comp_op_); } } } @@ -220,13 +221,13 @@ void grid_text_renderer::render(glyph_positions_ptr pos, value_integer featur template -void agg_text_renderer::render_halo( - FT_Bitmap *bitmap, +void agg_text_renderer::render_halo(FT_Bitmap *bitmap, unsigned rgba, int x, int y, int halo_radius, - double opacity) + double opacity, + composite_mode_e comp_op) { int x_max=x+bitmap->width; int y_max=y+bitmap->rows; @@ -241,7 +242,7 @@ void agg_text_renderer::render_halo( { for (int n=-halo_radius; n <=halo_radius; ++n) for (int m=-halo_radius;m <= halo_radius; ++m) - pixmap_.blendPixel2(i+m,j+n,rgba,gray,opacity); + pixmap_.composite_pixel(comp_op, i+m, j+n, rgba, gray, opacity); } } }