26 QList<QgsLabelPosition *> searchResults;
29 searchResults.push_back( const_cast< QgsLabelPosition * >( pos ) );
35 QList<QgsLabelPosition *>::const_iterator resultIt = searchResults.constBegin();
36 for ( ; resultIt != searchResults.constEnd(); ++resultIt )
38 if ( ( *resultIt )->labelGeometry.contains( &p ) )
40 posList.push_back( *resultIt );
47 QList<QgsLabelPosition *> searchResults;
55 QList<QgsLabelPosition *>::const_iterator resultIt = searchResults.constBegin();
56 for ( ; resultIt != searchResults.constEnd(); ++resultIt )
58 if ( ( *resultIt )->labelGeometry.intersects( r ) )
60 posList.push_back( *resultIt );
72 QVector<QgsPointXY> cornerPoints;
73 cornerPoints.reserve( 4 );
74 double xMin = std::numeric_limits< double >::max();
75 double yMin = std::numeric_limits< double >::max();
76 double xMax = std::numeric_limits< double >::lowest();
77 double yMax = std::numeric_limits< double >::lowest();
78 for (
int i = 0; i < 4; ++i )
81 QPointF res = mTransform.map( QPointF( labelPos->
getX( i ), labelPos->
getY( i ) ) );
83 xMin = std::min( xMin, res.x() );
84 xMax = std::max( xMax, res.x() );
85 yMin = std::min( yMin, res.y() );
86 yMax = std::max( yMax, res.y() );
91 std::unique_ptr< QgsLabelPosition > newEntry = qgis::make_unique< QgsLabelPosition >( featureId, labelPos->
getAlpha() + mMapSettings.
rotation(), cornerPoints, bounds,
92 labelPos->
getWidth(), labelPos->
getHeight(), layerName, labeltext, labelfont, labelPos->
getUpsideDown(), diagram, pinned, providerId, labelGeometry, isUnplaced );
93 mSpatialIndex.
insert( newEntry.get(), bounds );
94 mOwnedPositions.emplace_back( std::move( newEntry ) );
98 return insertLabel( next, featureId, layerName, labeltext, labelfont, diagram, pinned, providerId, isUnplaced );
105 mMapSettings = settings;
111 mTransform = QTransform::fromTranslate( center.
x(), center.
y() );
112 mTransform.rotate( mMapSettings.
rotation() );
113 mTransform.translate( -center.
x(), -center.
y() );
117 mTransform = QTransform();