Added implementation of level of details per layer and item type pairs basis (items on every layer have a possibility to define the minimum VIEW scale to be shown).

This commit is contained in:
Maciej Suminski 2013-07-04 18:45:00 +02:00
parent 9c4e02379a
commit e29a829a70
2 changed files with 15 additions and 2 deletions

View File

@ -459,7 +459,8 @@ struct VIEW::drawItem
// Draw using cached information or create one
int group = aItem->getGroup( currentLayer->id );
if( group >= 0 && aItem->ViewIsVisible() )
if( group >= 0 && aItem->ViewIsVisible() &&
aItem->ViewGetLOD( currentLayer->id ) < view->m_scale )
{
gal->DrawGroup( group );
}
@ -471,7 +472,8 @@ struct VIEW::drawItem
gal->EndGroup();
}
}
else if( aItem->ViewIsVisible() )
else if( aItem->ViewIsVisible() &&
aItem->ViewGetLOD( currentLayer->id ) < view->m_scale )
{
// Immediate mode
view->m_painter->Draw( aItem, currentLayer->id );

View File

@ -227,6 +227,17 @@ public:
return m_viewVisible;
}
/**
* Function ViewGetLOD()
* Returns the level of detail of the item. A level of detail is the minimal VIEW scale that
* is sufficient for an item to be shown on a given layer.
*/
virtual unsigned int ViewGetLOD( int aLayer ) const
{
// By default always show the item
return 0;
}
/**
* Function ViewUpdate()
* For dynamic VIEWs, informs the associated VIEW that the graphical representation of