1717
1818#include " qgslogger.h"
1919#include " qgspalgeometry.h"
20+ #include " qgsproject.h"
2021
2122#include " feature.h"
2223#include " labelposition.h"
@@ -33,9 +34,8 @@ static bool _palIsCancelled( void* ctx )
3334}
3435
3536
36- QgsLabelingEngineV2::QgsLabelingEngineV2 ( const QgsMapSettings& mapSettings )
37- : mMapSettings( mapSettings )
38- , mFlags( RenderOutlineLabels | UsePartialCandidates )
37+ QgsLabelingEngineV2::QgsLabelingEngineV2 ()
38+ : mFlags( RenderOutlineLabels | UsePartialCandidates )
3939 , mSearchMethod( QgsPalLabeling::Chain )
4040 , mCandPoint( 8 )
4141 , mCandLine( 8 )
@@ -57,6 +57,15 @@ void QgsLabelingEngineV2::addProvider( QgsAbstractLabelProvider* provider )
5757 mProviders << provider;
5858}
5959
60+ void QgsLabelingEngineV2::removeProvider ( QgsAbstractLabelProvider* provider )
61+ {
62+ int idx = mProviders .indexOf ( provider );
63+ if ( idx >= 0 )
64+ {
65+ delete mProviders .takeAt ( idx );
66+ }
67+ }
68+
6069void QgsLabelingEngineV2::run ( QgsRenderContext& context )
6170{
6271 pal::Pal p;
@@ -146,7 +155,7 @@ void QgsLabelingEngineV2::run( QgsRenderContext& context )
146155 l->setUpsidedownLabels ( upsdnlabels );
147156
148157
149- QList<QgsLabelFeature*> features = provider->labelFeatures ( mMapSettings , context );
158+ QList<QgsLabelFeature*> features = provider->labelFeatures ( context );
150159
151160 foreach ( QgsLabelFeature* feature, features )
152161 {
@@ -286,6 +295,40 @@ QgsLabelingResults* QgsLabelingEngineV2::takeResults()
286295 return res;
287296}
288297
298+
299+ void QgsLabelingEngineV2::readSettingsFromProject ()
300+ {
301+ bool saved = false ;
302+ QgsProject* prj = QgsProject::instance ();
303+ mSearchMethod = ( QgsPalLabeling::Search )( prj->readNumEntry ( " PAL" , " /SearchMethod" , ( int ) QgsPalLabeling::Chain, &saved ) );
304+ mCandPoint = prj->readNumEntry ( " PAL" , " /CandidatesPoint" , 8 , &saved );
305+ mCandLine = prj->readNumEntry ( " PAL" , " /CandidatesLine" , 8 , &saved );
306+ mCandPolygon = prj->readNumEntry ( " PAL" , " /CandidatesPolygon" , 8 , &saved );
307+
308+ mFlags = 0 ;
309+ if ( prj->readBoolEntry ( " PAL" , " /ShowingCandidates" , false , &saved ) ) mFlags |= DrawCandidates;
310+ if ( prj->readBoolEntry ( " PAL" , " /DrawRectOnly" , false , &saved ) ) mFlags |= DrawLabelRectOnly;
311+ if ( prj->readBoolEntry ( " PAL" , " /ShowingShadowRects" , false , &saved ) ) mFlags |= DrawShadowRects;
312+ if ( prj->readBoolEntry ( " PAL" , " /ShowingAllLabels" , false , &saved ) ) mFlags |= UseAllLabels;
313+ if ( prj->readBoolEntry ( " PAL" , " /ShowingPartialsLabels" , true , &saved ) ) mFlags |= UsePartialCandidates;
314+ if ( prj->readBoolEntry ( " PAL" , " /DrawOutlineLabels" , true , &saved ) ) mFlags |= RenderOutlineLabels;
315+ }
316+
317+ void QgsLabelingEngineV2::writeSettingsToProject ()
318+ {
319+ QgsProject::instance ()->writeEntry ( " PAL" , " /SearchMethod" , ( int )mSearchMethod );
320+ QgsProject::instance ()->writeEntry ( " PAL" , " /CandidatesPoint" , mCandPoint );
321+ QgsProject::instance ()->writeEntry ( " PAL" , " /CandidatesLine" , mCandLine );
322+ QgsProject::instance ()->writeEntry ( " PAL" , " /CandidatesPolygon" , mCandPolygon );
323+
324+ QgsProject::instance ()->writeEntry ( " PAL" , " /ShowingCandidates" , mFlags .testFlag ( DrawCandidates ) );
325+ QgsProject::instance ()->writeEntry ( " PAL" , " /DrawRectOnly" , mFlags .testFlag ( DrawLabelRectOnly ) );
326+ QgsProject::instance ()->writeEntry ( " PAL" , " /ShowingShadowRects" , mFlags .testFlag ( DrawShadowRects ) );
327+ QgsProject::instance ()->writeEntry ( " PAL" , " /ShowingAllLabels" , mFlags .testFlag ( UseAllLabels ) );
328+ QgsProject::instance ()->writeEntry ( " PAL" , " /ShowingPartialsLabels" , mFlags .testFlag ( UsePartialCandidates ) );
329+ QgsProject::instance ()->writeEntry ( " PAL" , " /DrawOutlineLabels" , mFlags .testFlag ( RenderOutlineLabels ) );
330+ }
331+
289332QgsAbstractLabelProvider* QgsLabelingEngineV2::providerById ( const QString& id )
290333{
291334 Q_FOREACH ( QgsAbstractLabelProvider* provider, mProviders )
0 commit comments