+ fix raster_symbolizer: add x/y dst args to composite
This commit is contained in:
parent
c469a63615
commit
7380a6a001
3 changed files with 16 additions and 5 deletions
|
@ -74,8 +74,12 @@ enum composite_mode_e
|
|||
MAPNIK_DECL boost::optional<composite_mode_e> comp_op_from_string(std::string const& name);
|
||||
|
||||
template <typename T1, typename T2>
|
||||
MAPNIK_DECL void composite(T1 & im, T2 & im2, composite_mode_e mode, float opacity, bool premultiply_src, bool premultiply_dst);
|
||||
MAPNIK_DECL void composite(T1 & im, T2 & im2, int xdst, int ydst,
|
||||
composite_mode_e mode, float opacity,
|
||||
bool premultiply_src, bool premultiply_dst);
|
||||
|
||||
template <typename T1, typename T2>
|
||||
MAPNIK_DECL void composite(T1 & im, T2 & im2, composite_mode_e mode, float opacity, bool premultiply_src, bool premultiply_dst);
|
||||
|
||||
#ifdef _MSC_VER
|
||||
template MAPNIK_DECL void composite<mapnik::image_data_32,mapnik::image_data_32>(mapnik::image_data_32 & im, mapnik::image_data_32 & im2, composite_mode_e mode, float opacity, bool premultiply_src, bool premultiply_dst);
|
||||
|
|
|
@ -77,7 +77,7 @@ void agg_renderer<T>::process(raster_symbolizer const& sym,
|
|||
scale_factor,
|
||||
sym.get_scaling());
|
||||
|
||||
composite(current_buffer_->data(),target.data_,sym.comp_op(), sym.get_opacity(), false ,false);
|
||||
composite(current_buffer_->data(), target.data_, start_x, start_y, sym.comp_op(), sym.get_opacity(), false , false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -81,7 +81,7 @@ boost::optional<composite_mode_e> comp_op_from_string(std::string const& name)
|
|||
}
|
||||
|
||||
template <typename T1, typename T2>
|
||||
void composite(T1 & im, T2 & im2, composite_mode_e mode, float opacity, bool premultiply_src, bool premultiply_dst)
|
||||
void composite(T1 & im, T2 & im2, int xdst, int ydst, composite_mode_e mode, float opacity, bool premultiply_src, bool premultiply_dst)
|
||||
{
|
||||
typedef agg::rgba8 color;
|
||||
typedef agg::order_rgba order;
|
||||
|
@ -100,10 +100,17 @@ void composite(T1 & im, T2 & im2, composite_mode_e mode, float opacity, bool pre
|
|||
if (premultiply_src) pixf_mask.premultiply();
|
||||
if (premultiply_dst) pixf.premultiply();
|
||||
renderer_type ren(pixf);
|
||||
ren.blend_from(pixf_mask,0,0,0,unsigned(255*opacity));
|
||||
ren.blend_from(pixf_mask,0, xdst,ydst,unsigned(255*opacity));
|
||||
}
|
||||
|
||||
template <typename T1, typename T2>
|
||||
void composite(T1 & im, T2 & im2, composite_mode_e mode, float opacity, bool premultiply_src, bool premultiply_dst)
|
||||
{
|
||||
composite(im, im2, 0, 0, mode, opacity, premultiply_src, premultiply_dst);
|
||||
}
|
||||
|
||||
template void composite<mapnik::image_data_32,mapnik::image_data_32>(mapnik::image_data_32 & im, mapnik::image_data_32 & im2, composite_mode_e mode, float opacity, bool premultiply_src, bool premultiply_dst);
|
||||
template void composite<mapnik::image_data_32,mapnik::image_data_32>(mapnik::image_data_32&, mapnik::image_data_32& , int, int,composite_mode_e, float, bool, bool);
|
||||
|
||||
template void composite<mapnik::image_data_32,mapnik::image_data_32>(mapnik::image_data_32&, mapnik::image_data_32&, composite_mode_e, float, bool, bool);
|
||||
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue