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

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
Loading
Loading
Loading
Loading
+22 −8
Original line number Original line Diff line number Diff line
@@ -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
    {
    {
    }
    }


    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


        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
    {
    {
    }
    }


    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
    {
    {
    }
    }


    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


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
    {
    {
    }
    }


    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
        {
        {
            aItem->setGroup( layer, -1 );
            aItem->setGroup( layer, -1 );
        }
        }

        return true;
    }
    }


    VIEW* view;
    VIEW* view;
@@ -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;
+20 −22
Original line number Original line Diff line number Diff line
@@ -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
}
}






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

include/rtree.h

deleted100644 → 0
+0 −1758

File deleted.

Preview size limit exceeded, changes collapsed.

+1 −2
Original line number Original line Diff line number Diff line
@@ -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:
     * 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
    {
    {