Branch data Line data Source code
1 : : /*************************************************************************** 2 : : qgslabelingresults.cpp 3 : : ------------------- 4 : : begin : February 2021 5 : : copyright : (C) Nyall Dawson 6 : : email : nyall dot dawson at gmail dot com 7 : : *************************************************************************** 8 : : * * 9 : : * This program is free software; you can redistribute it and/or modify * 10 : : * it under the terms of the GNU General Public License as published by * 11 : : * the Free Software Foundation; either version 2 of the License, or * 12 : : * (at your option) any later version. * 13 : : * * 14 : : ***************************************************************************/ 15 : : 16 : : #include "qgslabelingresults.h" 17 : : #include "qgslabelsearchtree.h" 18 : : 19 : 0 : QgsLabelingResults::QgsLabelingResults() 20 : 0 : : mLabelSearchTree( std::make_unique< QgsLabelSearchTree >() ) 21 : : { 22 : 0 : } 23 : : 24 : 0 : QgsLabelingResults::~QgsLabelingResults() = default; 25 : : 26 : 0 : QList<QgsLabelPosition> QgsLabelingResults::labelsAtPosition( const QgsPointXY &p ) const 27 : : { 28 : 0 : QList<QgsLabelPosition> positions; 29 : : 30 : 0 : QList<QgsLabelPosition *> positionPointers; 31 : 0 : if ( mLabelSearchTree ) 32 : : { 33 : 0 : mLabelSearchTree->label( p, positionPointers ); 34 : 0 : QList<QgsLabelPosition *>::const_iterator pointerIt = positionPointers.constBegin(); 35 : 0 : for ( ; pointerIt != positionPointers.constEnd(); ++pointerIt ) 36 : : { 37 : 0 : positions.push_back( QgsLabelPosition( **pointerIt ) ); 38 : 0 : } 39 : 0 : } 40 : : 41 : 0 : return positions; 42 : 0 : } 43 : : 44 : 0 : QList<QgsLabelPosition> QgsLabelingResults::labelsWithinRect( const QgsRectangle &r ) const 45 : : { 46 : 0 : QList<QgsLabelPosition> positions; 47 : : 48 : 0 : QList<QgsLabelPosition *> positionPointers; 49 : 0 : if ( mLabelSearchTree ) 50 : : { 51 : 0 : mLabelSearchTree->labelsInRect( r, positionPointers ); 52 : 0 : QList<QgsLabelPosition *>::const_iterator pointerIt = positionPointers.constBegin(); 53 : 0 : for ( ; pointerIt != positionPointers.constEnd(); ++pointerIt ) 54 : : { 55 : 0 : positions.push_back( QgsLabelPosition( **pointerIt ) ); 56 : 0 : } 57 : 0 : } 58 : : 59 : 0 : return positions; 60 : 0 : } 61 : : 62 : 0 : QList<QgsCalloutPosition> QgsLabelingResults::calloutsWithinRectangle( const QgsRectangle &rectangle ) const 63 : : { 64 : 0 : QList<QgsCalloutPosition> positions; 65 : : 66 : 0 : if ( mLabelSearchTree ) 67 : : { 68 : 0 : const QList<const QgsCalloutPosition *>positionPointers = mLabelSearchTree->calloutsInRectangle( rectangle ); 69 : 0 : for ( const QgsCalloutPosition *pos : positionPointers ) 70 : : { 71 : 0 : positions.push_back( QgsCalloutPosition( *pos ) ); 72 : : } 73 : 0 : } 74 : : 75 : 0 : return positions; 76 : 0 : } 77 : : 78 : 0 : void QgsLabelingResults::setMapSettings( const QgsMapSettings &settings ) 79 : : { 80 : 0 : mLabelSearchTree->setMapSettings( settings ); 81 : 0 : }