pass parameter by reference

store reference to wstring in text_path
This commit is contained in:
Artem Pavlenko 2008-02-12 20:05:04 +00:00
parent 01f4984804
commit 1ea7bffd4c
3 changed files with 23 additions and 23 deletions

View file

@ -307,25 +307,25 @@ namespace mapnik
return dimension_t(slot->advance.x >> 6, glyph_bbox.yMax - glyph_bbox.yMin);
}
void get_string_info(string_info *info)
{
unsigned width = 0;
unsigned height = 0;
void get_string_info(string_info & info)
{
unsigned width = 0;
unsigned height = 0;
std::wstring text = info->get_string();
std::wstring const& text = info.get_string();
for (std::wstring::const_iterator i=text.begin();i!=text.end();++i)
{
for (std::wstring::const_iterator i=text.begin();i!=text.end();++i)
{
dimension_t char_dim = character_dimensions(*i);
info->add_info(*i, char_dim.first, char_dim.second);
info.add_info(*i, char_dim.first, char_dim.second);
width += char_dim.first;
height = char_dim.second > height ? char_dim.second : height;
}
info->set_dimensions(width, height);
}
}
info.set_dimensions(width, height);
}
void render(double x0, double y0)
{

View file

@ -50,14 +50,13 @@ namespace mapnik
{
protected:
typedef boost::ptr_vector<character_info> characters_t;
std::wstring string_;
characters_t characters_;
std::wstring const& text_;
double width_;
double height_;
public:
string_info(std::wstring string)
: string_(string),
string_info(std::wstring const& text)
: text_(text),
width_(0),
height_(0) {}
@ -94,7 +93,7 @@ namespace mapnik
std::wstring const& get_string() const
{
return string_;
return text_;
}
};

View file

@ -466,8 +466,9 @@ namespace mapnik
text_renderer<mapnik::Image32> ren(pixmap_,face);
ren.set_pixel_size(sym.get_text_size());
ren.set_fill(sym.get_fill());
string_info info(text);
ren.get_string_info(&info);
ren.get_string_info(info);
placement_finder<label_collision_detector4> finder(detector_);
@ -681,7 +682,7 @@ namespace mapnik
placement_finder<label_collision_detector4> finder(detector_);
string_info info(text);
ren.get_string_info(&info);
ren.get_string_info(info);
unsigned num_geom = feature.num_geometries();
for (unsigned i=0;i<num_geom;++i)
{