try to solve #2714

This commit is contained in:
Dane Springmeyer 2015-02-26 11:12:19 -08:00
parent 5a4e821cae
commit 4afcac5563
9 changed files with 37 additions and 29 deletions

View File

@ -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)
{

View File

@ -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_;
};

View File

@ -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);

View File

@ -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);
}
}

View File

@ -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_);

View File

@ -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_);

View File

@ -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);

View File

@ -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);

View File

@ -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