mirror of
https://github.com/mapnik/mapnik.git
synced 2026-02-01 17:36:36 +00:00
try to solve #2714
This commit is contained in:
parent
5a4e821cae
commit
4afcac5563
@ -240,7 +240,7 @@ void render_offset_placements(placements_list const& placements,
|
||||
glyphs->set_base_point(base_point + offset);
|
||||
|
||||
// update the position of any marker
|
||||
marker_info_ptr marker_info = glyphs->marker();
|
||||
marker_info_ptr marker_info = glyphs->get_marker();
|
||||
pixel_position marker_pos = glyphs->marker_pos();
|
||||
if (marker_info)
|
||||
{
|
||||
|
||||
@ -52,9 +52,9 @@ struct marker_info
|
||||
{
|
||||
//marker_info() : marker(), transform() {}
|
||||
marker_info(marker const& _marker, agg::trans_affine const& _transform) :
|
||||
marker(_marker), transform(_transform) {}
|
||||
marker const& marker;
|
||||
agg::trans_affine transform;
|
||||
marker_(_marker), transform_(_transform) {}
|
||||
marker const& marker_;
|
||||
agg::trans_affine transform_;
|
||||
};
|
||||
|
||||
using marker_info_ptr = std::shared_ptr<marker_info>;
|
||||
@ -80,13 +80,13 @@ public:
|
||||
pixel_position const& get_base_point() const;
|
||||
void set_base_point(pixel_position const& base_point);
|
||||
void set_marker(marker_info_ptr marker, pixel_position const& marker_pos);
|
||||
marker_info_ptr marker() const;
|
||||
marker_info_ptr get_marker() const;
|
||||
pixel_position const& marker_pos() const;
|
||||
box2d<double> const & bbox() const;
|
||||
private:
|
||||
std::vector<glyph_position> data_;
|
||||
pixel_position base_point_;
|
||||
marker_info_ptr marker_;
|
||||
marker_info_ptr marker_info_;
|
||||
pixel_position marker_pos_;
|
||||
box2d<double> bbox_;
|
||||
};
|
||||
|
||||
@ -122,11 +122,12 @@ struct thunk_renderer<image_rgba8>
|
||||
offset_,
|
||||
[&] (glyph_positions_ptr glyphs)
|
||||
{
|
||||
if (glyphs->marker())
|
||||
marker_info_ptr mark = glyphs->get_marker();
|
||||
if (mark)
|
||||
{
|
||||
ren_.render_marker(glyphs->marker_pos(),
|
||||
glyphs->marker()->marker,
|
||||
glyphs->marker()->transform,
|
||||
mark->marker_,
|
||||
mark->transform_,
|
||||
thunk.opacity_, thunk.comp_op_);
|
||||
}
|
||||
ren.render(*glyphs);
|
||||
|
||||
@ -62,11 +62,14 @@ void agg_renderer<T0,T1>::process(shield_symbolizer const& sym,
|
||||
placements_list const& placements = helper.get();
|
||||
for (glyph_positions_ptr glyphs : placements)
|
||||
{
|
||||
if (glyphs->marker())
|
||||
marker_info_ptr mark = glyphs->get_marker();
|
||||
if (mark)
|
||||
{
|
||||
render_marker(glyphs->marker_pos(),
|
||||
glyphs->marker()->marker,
|
||||
glyphs->marker()->transform,
|
||||
mark->marker_,
|
||||
mark->transform_,
|
||||
opacity, comp_op);
|
||||
}
|
||||
ren.render(*glyphs);
|
||||
}
|
||||
}
|
||||
|
||||
@ -97,11 +97,12 @@ struct thunk_renderer
|
||||
offset_,
|
||||
[&] (glyph_positions_ptr glyphs)
|
||||
{
|
||||
if (glyphs->marker())
|
||||
marker_info_ptr mark = glyphs->get_marker();
|
||||
if (mark)
|
||||
{
|
||||
ren_.render_marker(glyphs->marker_pos(),
|
||||
glyphs->marker()->marker,
|
||||
glyphs->marker()->transform,
|
||||
mark->marker_,
|
||||
mark->transform_,
|
||||
thunk.opacity_, thunk.comp_op_);
|
||||
}
|
||||
context_.add_text(*glyphs, face_manager_, src_over, src_over, common_.scale_factor_);
|
||||
|
||||
@ -57,11 +57,12 @@ void cairo_renderer<T>::process(shield_symbolizer const& sym,
|
||||
placements_list const &placements = helper.get();
|
||||
for (glyph_positions_ptr glyphs : placements)
|
||||
{
|
||||
if (glyphs->marker()) {
|
||||
marker_info_ptr mark = glyphs->get_marker();
|
||||
if (mark) {
|
||||
pixel_position pos = glyphs->marker_pos();
|
||||
render_marker(pos,
|
||||
glyphs->marker()->marker,
|
||||
glyphs->marker()->transform,
|
||||
mark->marker_,
|
||||
mark->transform_,
|
||||
opacity);
|
||||
}
|
||||
context_.add_text(*glyphs, face_manager_, comp_op, halo_comp_op, common_.scale_factor_);
|
||||
|
||||
@ -131,12 +131,13 @@ struct thunk_renderer
|
||||
offset_,
|
||||
[&] (glyph_positions_ptr glyphs)
|
||||
{
|
||||
if (glyphs->marker())
|
||||
marker_info_ptr mark = glyphs->get_marker();
|
||||
if (mark)
|
||||
{
|
||||
ren_.render_marker(feature_,
|
||||
glyphs->marker_pos(),
|
||||
glyphs->marker()->marker,
|
||||
glyphs->marker()->transform,
|
||||
mark->marker_,
|
||||
mark->transform_,
|
||||
thunk.opacity_, thunk.comp_op_);
|
||||
}
|
||||
ren.render(*glyphs, feature_id);
|
||||
|
||||
@ -66,12 +66,13 @@ void grid_renderer<T>::process(shield_symbolizer const& sym,
|
||||
|
||||
for (glyph_positions_ptr glyphs : placements)
|
||||
{
|
||||
if (glyphs->marker())
|
||||
marker_info_ptr mark = glyphs->get_marker();
|
||||
if (mark)
|
||||
{
|
||||
render_marker(feature,
|
||||
glyphs->marker_pos(),
|
||||
glyphs->marker()->marker,
|
||||
glyphs->marker()->transform,
|
||||
mark->marker_,
|
||||
mark->transform_,
|
||||
opacity, comp_op);
|
||||
}
|
||||
ren.render(*glyphs, feature_id);
|
||||
|
||||
@ -34,7 +34,7 @@ namespace mapnik
|
||||
glyph_positions::glyph_positions()
|
||||
: data_(),
|
||||
base_point_(),
|
||||
marker_(),
|
||||
marker_info_(),
|
||||
marker_pos_(),
|
||||
bbox_() {}
|
||||
|
||||
@ -68,15 +68,15 @@ void glyph_positions::set_base_point(pixel_position const& base_point)
|
||||
base_point_ = base_point;
|
||||
}
|
||||
|
||||
void glyph_positions::set_marker(marker_info_ptr marker, pixel_position const& marker_pos)
|
||||
void glyph_positions::set_marker(marker_info_ptr mark, pixel_position const& marker_pos)
|
||||
{
|
||||
marker_ = marker;
|
||||
marker_info_ = mark;
|
||||
marker_pos_ = marker_pos;
|
||||
}
|
||||
|
||||
marker_info_ptr glyph_positions::marker() const
|
||||
marker_info_ptr glyph_positions::get_marker() const
|
||||
{
|
||||
return marker_;
|
||||
return marker_info_;
|
||||
}
|
||||
|
||||
pixel_position const& glyph_positions::marker_pos() const
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user