Browse Source

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).

pull/1/head
Maciej Suminski 13 years ago
parent
commit
e29a829a70
  1. 6
      common/view/view.cpp
  2. 11
      include/view/view_item.h

6
common/view/view.cpp

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

11
include/view/view_item.h

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

Loading…
Cancel
Save