Commit 3701e131 authored by Maciej Suminski's avatar Maciej Suminski Committed by Wayne Stambaugh
Browse files

Commit merge request lp:197858 (fixes lp:1249736).

parents dbd72122 d7fc8db0
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;
+21 −23
Original line number Original line Diff line number Diff line
@@ -1286,7 +1286,7 @@ int RTREE_QUAL::PickBranch( Rect* a_rect, Node* a_node )
    ELEMTYPEREAL    increase;
    ELEMTYPEREAL    increase;
    ELEMTYPEREAL    bestIncr = (ELEMTYPEREAL) -1;
    ELEMTYPEREAL    bestIncr = (ELEMTYPEREAL) -1;
    ELEMTYPEREAL    area;
    ELEMTYPEREAL    area;
    ELEMTYPEREAL    bestArea;
    ELEMTYPEREAL    bestArea = 0;
    int             best = 0;
    int             best = 0;
    Rect            tempRect;
    Rect            tempRect;


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