[mapguide-commits] r1266 - trunk/MgDev/Common/Stylization
svn_mapguide at osgeo.org
svn_mapguide at osgeo.org
Fri Mar 16 18:27:30 EDT 2007
Author: waltweltonlair
Date: 2007-03-16 18:27:30 -0400 (Fri, 16 Mar 2007)
New Revision: 1266
Modified:
trunk/MgDev/Common/Stylization/StylizationEngine.cpp
trunk/MgDev/Common/Stylization/StylizationEngine.h
Log:
Just a small optimization: build the list of composite type styles once in
StylizationEngine::StylizeVectorLayer, rather than determining the type of
each one once per pass and per feature.
Modified: trunk/MgDev/Common/Stylization/StylizationEngine.cpp
===================================================================
--- trunk/MgDev/Common/Stylization/StylizationEngine.cpp 2007-03-16 21:45:44 UTC (rev 1265)
+++ trunk/MgDev/Common/Stylization/StylizationEngine.cpp 2007-03-16 22:27:30 UTC (rev 1266)
@@ -38,6 +38,7 @@
StylizationEngine::StylizationEngine(SE_SymbolManager* resources) :
m_resources(resources),
+ m_renderer(NULL),
m_serenderer(NULL)
{
m_pool = new SE_LineBufferPool;
@@ -83,6 +84,7 @@
return;
m_serenderer->SetLineBufferPool(m_pool);
+ bool bClip = m_renderer->RequiresClipping();
// get tooltip and url for the layer
SE_String seTip;
@@ -90,9 +92,20 @@
m_visitor->ParseStringExpression(layer->GetToolTip(), seTip);
m_visitor->ParseStringExpression(layer->GetUrl(), seUrl);
+ // extract all the composite styles once
MdfModel::FeatureTypeStyleCollection* ftsc = range->GetFeatureTypeStyles();
+ std::vector<CompositeTypeStyle*> compTypeStyles;
+ for (int i=0; i<ftsc->GetCount(); i++)
+ {
+ MdfModel::FeatureTypeStyle* fts = ftsc->GetAt(i);
+ if (FeatureTypeStyleVisitor::DetermineFeatureTypeStyle(fts) == FeatureTypeStyleVisitor::ftsComposite)
+ compTypeStyles.push_back((CompositeTypeStyle*)fts);
+ }
- bool bClip = renderer->RequiresClipping();
+ size_t numTypeStyles = compTypeStyles.size();
+ _ASSERT(numTypeStyles > 0);
+ if (numTypeStyles == 0)
+ return;
// we always start with rendering pass 0
int renderingPass = 0;
@@ -145,15 +158,9 @@
//expressions and this call flushes that
executor->Reset();
- // we need to stylize once for each FeatureTypeStyle that matches
- // the geometry type (Note: this may have to change to match
- // feature classes)
- for (int i=0; i<ftsc->GetCount(); i++)
- {
- MdfModel::FeatureTypeStyle* fts = ftsc->GetAt(i);
- if (FeatureTypeStyleVisitor::DetermineFeatureTypeStyle(fts) == FeatureTypeStyleVisitor::ftsComposite)
- Stylize(reader, executor, lb, (CompositeTypeStyle*)fts, &seTip, &seUrl, NULL, renderingPass, nextRenderingPass);
- }
+ // stylize once for each composite type style
+ for (size_t i=0; i<numTypeStyles; i++)
+ Stylize(reader, executor, lb, compTypeStyles[i], &seTip, &seUrl, NULL, renderingPass, nextRenderingPass);
if (lb)
m_lbPool->FreeLineBuffer(lb); // free geometry when done stylizing
Modified: trunk/MgDev/Common/Stylization/StylizationEngine.h
===================================================================
--- trunk/MgDev/Common/Stylization/StylizationEngine.h 2007-03-16 21:45:44 UTC (rev 1265)
+++ trunk/MgDev/Common/Stylization/StylizationEngine.h 2007-03-16 22:27:30 UTC (rev 1266)
@@ -85,8 +85,8 @@
void LayoutCustomLabel(const std::wstring& positioningAlgo, LineBuffer* geometry, SE_Matrix& xform, SE_Style* style, SE_RenderStyle* rstyle, double mm2px);
private:
+ Renderer* m_renderer;
SE_Renderer* m_serenderer;
- Renderer* m_renderer;
SE_SymbolManager* m_resources;
SE_LineBufferPool* m_pool;
SE_StyleVisitor* m_visitor;
More information about the mapguide-commits
mailing list