don't use dynamic memory allocation when it's not necessary.

This commit is contained in:
rachytski 2012-02-04 16:16:29 +04:00 committed by Alex Zolotarev
parent 02c6dc4193
commit be68c6d53d
3 changed files with 18 additions and 12 deletions

View file

@ -69,6 +69,9 @@ namespace yg
m_fontDesc(fontDesc),
m_pivot(pt)
{
m_entries.reserve(visText.size());
m_metrics.reserve(visText.size());
if (!m_fontDesc.IsValid())
return;
@ -381,17 +384,17 @@ namespace yg
return m_lastVisible;
}
vector<GlyphLayoutElem> const & GlyphLayout::entries() const
buffer_vector<GlyphLayoutElem, 32> const & GlyphLayout::entries() const
{
return m_entries;
}
vector<GlyphMetrics> const & GlyphLayout::metrics() const
buffer_vector<GlyphMetrics, 32> const & GlyphLayout::metrics() const
{
return m_metrics;
}
vector<m2::AnyRectD> const & GlyphLayout::boundRects() const
buffer_vector<m2::AnyRectD, 16> const & GlyphLayout::boundRects() const
{
return m_boundRects;
}

View file

@ -45,10 +45,9 @@ namespace yg
yg::FontDesc m_fontDesc;
vector<GlyphMetrics> m_metrics;
vector<GlyphLayoutElem> m_entries;
vector<m2::AnyRectD> m_boundRects;
buffer_vector<GlyphMetrics, 32> m_metrics;
buffer_vector<GlyphLayoutElem, 32> m_entries;
buffer_vector<m2::AnyRectD, 16> m_boundRects;
m2::PointD m_pivot;
@ -83,10 +82,9 @@ namespace yg
size_t firstVisible() const;
size_t lastVisible() const;
vector<GlyphLayoutElem> const & entries() const;
vector<GlyphMetrics> const & metrics() const;
vector<m2::AnyRectD> const & boundRects() const;
buffer_vector<GlyphLayoutElem, 32> const & entries() const;
buffer_vector<GlyphMetrics, 32> const & metrics() const;
buffer_vector<m2::AnyRectD, 16> const & boundRects() const;
m2::PointD const & pivot() const;
yg::FontDesc const & fontDesc() const;

View file

@ -31,7 +31,12 @@ namespace yg
{
if (isDirtyRect())
{
m_boundRects = m_glyphLayout.boundRects();
m_boundRects.clear();
m_boundRects.reserve(m_glyphLayout.boundRects().size());
for (unsigned i = 0; i < m_glyphLayout.boundRects().size(); ++i)
m_boundRects.push_back(m_glyphLayout.boundRects()[i]);
// for (unsigned i = 0; i < m_boundRects.size(); ++i)
// m_boundRects[i] = m2::Inflate(m_boundRects[i], m2::PointD(10, 10));
// m_boundRects[i].m2::Inflate(m2::PointD(40, 2)); //< to create more sparse street names structure