Commit 89b80b2b authored by Maciej Suminski's avatar Maciej Suminski

Merged rtree.h, to avoid code duplication.

Fixes the case, when waste is never greater then the worst case and seeds assignment does not occur.
parent 17980792
...@@ -153,10 +153,12 @@ struct queryVisitor ...@@ -153,10 +153,12 @@ struct queryVisitor
{ {
} }
void operator()( VIEW_ITEM* aItem ) bool operator()( VIEW_ITEM* aItem )
{ {
if( aItem->ViewIsVisible() ) if( aItem->ViewIsVisible() )
m_cont.push_back( VIEW::LAYER_ITEM_PAIR( aItem, m_layer ) ); m_cont.push_back( VIEW::LAYER_ITEM_PAIR( aItem, m_layer ) );
return true;
} }
Container& m_cont; Container& m_cont;
...@@ -387,7 +389,7 @@ struct VIEW::updateItemsColor ...@@ -387,7 +389,7 @@ struct VIEW::updateItemsColor
{ {
} }
void operator()( VIEW_ITEM* aItem ) bool operator()( VIEW_ITEM* aItem )
{ {
// Obtain the color that should be used for coloring the item // Obtain the color that should be used for coloring the item
const COLOR4D color = painter->GetSettings()->GetColor( aItem, layer ); const COLOR4D color = painter->GetSettings()->GetColor( aItem, layer );
...@@ -395,6 +397,8 @@ struct VIEW::updateItemsColor ...@@ -395,6 +397,8 @@ struct VIEW::updateItemsColor
if( group >= 0 ) if( group >= 0 )
gal->ChangeGroupColor( group, color ); gal->ChangeGroupColor( group, color );
return true;
} }
int layer; int layer;
...@@ -447,12 +451,14 @@ struct VIEW::changeItemsDepth ...@@ -447,12 +451,14 @@ struct VIEW::changeItemsDepth
{ {
} }
void operator()( VIEW_ITEM* aItem ) bool operator()( VIEW_ITEM* aItem )
{ {
int group = aItem->getGroup( layer ); int group = aItem->getGroup( layer );
if( group >= 0 ) if( group >= 0 )
gal->ChangeGroupDepth( group, depth ); gal->ChangeGroupDepth( group, depth );
return true;
} }
int layer, depth; int layer, depth;
...@@ -571,15 +577,17 @@ struct VIEW::drawItem ...@@ -571,15 +577,17 @@ struct VIEW::drawItem
{ {
} }
void operator()( VIEW_ITEM* aItem ) bool operator()( VIEW_ITEM* aItem )
{ {
// Conditions that have te be fulfilled for an item to be drawn // Conditions that have te be fulfilled for an item to be drawn
bool drawCondition = aItem->ViewIsVisible() && bool drawCondition = aItem->ViewIsVisible() &&
aItem->ViewGetLOD( currentLayer->id ) < view->m_scale; aItem->ViewGetLOD( currentLayer->id ) < view->m_scale;
if( !drawCondition ) if( !drawCondition )
return; return true;
view->draw( aItem, currentLayer->id ); view->draw( aItem, currentLayer->id );
return true;
} }
const VIEW_LAYER* currentLayer; const VIEW_LAYER* currentLayer;
...@@ -676,9 +684,11 @@ bool VIEW::IsDirty() const ...@@ -676,9 +684,11 @@ bool VIEW::IsDirty() const
struct VIEW::unlinkItem struct VIEW::unlinkItem
{ {
void operator()( VIEW_ITEM* aItem ) bool operator()( VIEW_ITEM* aItem )
{ {
aItem->m_view = NULL; aItem->m_view = NULL;
return true;
} }
}; };
...@@ -690,7 +700,7 @@ struct VIEW::recacheItem ...@@ -690,7 +700,7 @@ struct VIEW::recacheItem
{ {
} }
void operator()( VIEW_ITEM* aItem ) bool operator()( VIEW_ITEM* aItem )
{ {
// Remove previously cached group // Remove previously cached group
int prevGroup = aItem->getGroup( layer ); int prevGroup = aItem->getGroup( layer );
...@@ -712,6 +722,8 @@ struct VIEW::recacheItem ...@@ -712,6 +722,8 @@ struct VIEW::recacheItem
{ {
aItem->setGroup( layer, -1 ); aItem->setGroup( layer, -1 );
} }
return true;
} }
VIEW* view; VIEW* view;
...@@ -792,12 +804,14 @@ struct VIEW::clearLayerCache ...@@ -792,12 +804,14 @@ struct VIEW::clearLayerCache
{ {
} }
void operator()( VIEW_ITEM* aItem ) bool operator()( VIEW_ITEM* aItem )
{ {
if( aItem->storesGroups() ) if( aItem->storesGroups() )
{ {
aItem->deleteGroups(); aItem->deleteGroups();
} }
return true;
} }
VIEW* view; VIEW* view;
......
...@@ -163,7 +163,7 @@ public: ...@@ -163,7 +163,7 @@ public:
/// Calculate Statistics /// Calculate Statistics
Statistics CalcStats( ); Statistics CalcStats();
/// Remove all entries from tree /// Remove all entries from tree
void RemoveAll(); void RemoveAll();
...@@ -1622,7 +1622,7 @@ void RTREE_QUAL::PickSeeds( PartitionVars* a_parVars ) ...@@ -1622,7 +1622,7 @@ void RTREE_QUAL::PickSeeds( PartitionVars* a_parVars )
&a_parVars->m_branchBuf[indexB].m_rect ); &a_parVars->m_branchBuf[indexB].m_rect );
waste = CalcRectVolume( &oneRect ) - area[indexA] - area[indexB]; waste = CalcRectVolume( &oneRect ) - area[indexA] - area[indexB];
if( waste > worst ) if( waste >= worst )
{ {
worst = waste; worst = waste;
seed0 = indexA; seed0 = indexA;
...@@ -1856,8 +1856,6 @@ bool RTREE_QUAL::Search( Node* a_node, Rect* a_rect, int& a_foundCount, bool a_r ...@@ -1856,8 +1856,6 @@ bool RTREE_QUAL::Search( Node* a_node, Rect* a_rect, int& a_foundCount, bool a_r
} }
//calculate the minimum distance between a point and a rectangle as defined by Manolopoulos et al. //calculate the minimum distance between a point and a rectangle as defined by Manolopoulos et al.
//it uses the square distance to avoid the use of ELEMTYPEREAL values, which are slower. //it uses the square distance to avoid the use of ELEMTYPEREAL values, which are slower.
RTREE_TEMPLATE RTREE_TEMPLATE
......
This diff is collapsed.
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
#include <math/box2.h> #include <math/box2.h>
#include <rtree.h> #include <geometry/rtree.h>
namespace KIGFX namespace KIGFX
{ {
...@@ -76,7 +76,6 @@ public: ...@@ -76,7 +76,6 @@ public:
* Executes a function object aVisitor for each item whose bounding box intersects * Executes a function object aVisitor for each item whose bounding box intersects
* with aBounds. * with aBounds.
*/ */
template <class Visitor> template <class Visitor>
void Query( const BOX2I& aBounds, Visitor& aVisitor ) // const void Query( const BOX2I& aBounds, Visitor& aVisitor ) // const
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment