diff --git a/python/core/qgsmaprendererjob.sip b/python/core/qgsmaprendererjob.sip index 7d65c8adccd..e355cbef241 100644 --- a/python/core/qgsmaprendererjob.sip +++ b/python/core/qgsmaprendererjob.sip @@ -122,7 +122,7 @@ class QgsMapRendererJob : QObject bool needTemporaryImage( QgsMapLayer* ml ); - static void drawLabeling( const QgsMapSettings& settings, QgsRenderContext& renderContext, QgsPalLabeling* labelingEngine, QPainter* painter ); + // TODO static void drawLabeling( const QgsMapSettings& settings, QgsRenderContext& renderContext, QgsPalLabeling* labelingEngine, QPainter* painter ); static void drawOldLabeling( const QgsMapSettings& settings, QgsRenderContext& renderContext ); static void drawNewLabeling( const QgsMapSettings& settings, QgsRenderContext& renderContext, QgsPalLabeling* labelingEngine ); diff --git a/src/core/qgslabelingenginev2.cpp b/src/core/qgslabelingenginev2.cpp index bd2837cf48e..b1249705606 100644 --- a/src/core/qgslabelingenginev2.cpp +++ b/src/core/qgslabelingenginev2.cpp @@ -33,9 +33,8 @@ static bool _palIsCancelled( void* ctx ) } -QgsLabelingEngineV2::QgsLabelingEngineV2( const QgsMapSettings& mapSettings, const QList& providers ) +QgsLabelingEngineV2::QgsLabelingEngineV2( const QgsMapSettings& mapSettings ) : mMapSettings( mapSettings ) - , mProviders( providers ) , mFlags( RenderOutlineLabels | UsePartialCandidates ) , mSearchMethod( QgsPalLabeling::Chain ) , mCandPoint( 8 ) @@ -43,15 +42,19 @@ QgsLabelingEngineV2::QgsLabelingEngineV2( const QgsMapSettings& mapSettings, con , mCandPolygon( 8 ) , mResults( 0 ) { - foreach ( QgsAbstractLabelProvider* provider, mProviders ) - provider->setEngine( this ); - mResults = new QgsLabelingResults; } QgsLabelingEngineV2::~QgsLabelingEngineV2() { delete mResults; + qDeleteAll( mProviders ); +} + +void QgsLabelingEngineV2::addProvider( QgsAbstractLabelProvider* provider ) +{ + provider->setEngine( this ); + mProviders << provider; } void QgsLabelingEngineV2::run( QgsRenderContext& context ) diff --git a/src/core/qgslabelingenginev2.h b/src/core/qgslabelingenginev2.h index c6aa26f526c..5f11de9c42a 100644 --- a/src/core/qgslabelingenginev2.h +++ b/src/core/qgslabelingenginev2.h @@ -210,7 +210,7 @@ Q_DECLARE_OPERATORS_FOR_FLAGS( QgsAbstractLabelProvider::Flags ) class CORE_EXPORT QgsLabelingEngineV2 { public: - QgsLabelingEngineV2( const QgsMapSettings& mapSettings, const QList& providers ); + QgsLabelingEngineV2( const QgsMapSettings& mapSettings ); ~QgsLabelingEngineV2(); enum Flag @@ -224,6 +224,9 @@ class CORE_EXPORT QgsLabelingEngineV2 }; Q_DECLARE_FLAGS( Flags, Flag ) + //! Add provider of label features. Takes ownership of the provider + void addProvider( QgsAbstractLabelProvider* provider ); + //! compute the labeling with given map settings and providers void run( QgsRenderContext& context ); diff --git a/src/core/qgsmaprenderercustompainterjob.cpp b/src/core/qgsmaprenderercustompainterjob.cpp index f6ce9cb6d00..4996a09f7ce 100644 --- a/src/core/qgsmaprenderercustompainterjob.cpp +++ b/src/core/qgsmaprenderercustompainterjob.cpp @@ -15,6 +15,7 @@ #include "qgsmaprenderercustompainterjob.h" +#include "qgslabelingenginev2.h" #include "qgslogger.h" #include "qgsmaplayerregistry.h" #include "qgsmaplayerrenderer.h" @@ -22,10 +23,13 @@ #include "qgsvectorlayer.h" #include "qgsrendererv2.h" +#define LABELING_V2 + QgsMapRendererCustomPainterJob::QgsMapRendererCustomPainterJob( const QgsMapSettings& settings, QPainter* painter ) : QgsMapRendererJob( settings ) , mPainter( painter ) , mLabelingEngine( 0 ) + , mLabelingEngineV2( 0 ) , mActive( false ) , mRenderSynchronously( false ) { @@ -40,6 +44,9 @@ QgsMapRendererCustomPainterJob::~QgsMapRendererCustomPainterJob() delete mLabelingEngine; mLabelingEngine = 0; + + delete mLabelingEngineV2; + mLabelingEngineV2 = 0; } void QgsMapRendererCustomPainterJob::start() @@ -72,14 +79,21 @@ void QgsMapRendererCustomPainterJob::start() delete mLabelingEngine; mLabelingEngine = 0; + delete mLabelingEngineV2; + mLabelingEngineV2 = 0; + if ( mSettings.testFlag( QgsMapSettings::DrawLabeling ) ) { +#ifdef LABELING_V2 + mLabelingEngineV2 = new QgsLabelingEngineV2( mSettings ); +#else mLabelingEngine = new QgsPalLabeling; mLabelingEngine->loadEngineSettings(); mLabelingEngine->init( mSettings ); +#endif } - mLayerJobs = prepareJobs( mPainter, mLabelingEngine ); + mLayerJobs = prepareJobs( mPainter, mLabelingEngine, mLabelingEngineV2 ); QgsDebugMsg( "Rendering prepared in (seconds): " + QString( "%1" ).arg( prepareTime.elapsed() / 1000.0 ) ); @@ -240,13 +254,13 @@ void QgsMapRendererCustomPainterJob::doRender() QgsDebugMsg( "Done rendering map layers" ); if ( mSettings.testFlag( QgsMapSettings::DrawLabeling ) && !mLabelingRenderContext.renderingStopped() ) - drawLabeling( mSettings, mLabelingRenderContext, mLabelingEngine, mPainter ); + drawLabeling( mSettings, mLabelingRenderContext, mLabelingEngine, mLabelingEngineV2, mPainter ); QgsDebugMsg( "Rendering completed in (seconds): " + QString( "%1" ).arg( renderTime.elapsed() / 1000.0 ) ); } -void QgsMapRendererJob::drawLabeling( const QgsMapSettings& settings, QgsRenderContext& renderContext, QgsPalLabeling* labelingEngine, QPainter* painter ) +void QgsMapRendererJob::drawLabeling( const QgsMapSettings& settings, QgsRenderContext& renderContext, QgsPalLabeling* labelingEngine, QgsLabelingEngineV2* labelingEngine2, QPainter* painter ) { QgsDebugMsg( "Draw labeling start" ); @@ -266,6 +280,15 @@ void QgsMapRendererJob::drawLabeling( const QgsMapSettings& settings, QgsRenderC drawNewLabeling( settings, renderContext, labelingEngine ); + if ( labelingEngine2 ) + { + // set correct extent + renderContext.setExtent( settings.visibleExtent() ); + renderContext.setCoordinateTransform( NULL ); + + labelingEngine2->run( renderContext ); + } + QgsDebugMsg( QString( "Draw labeling took (seconds): %1" ).arg( t.elapsed() / 1000. ) ); } diff --git a/src/core/qgsmaprenderercustompainterjob.h b/src/core/qgsmaprenderercustompainterjob.h index 87ddcda3f97..582153fcd52 100644 --- a/src/core/qgsmaprenderercustompainterjob.h +++ b/src/core/qgsmaprenderercustompainterjob.h @@ -84,6 +84,7 @@ class CORE_EXPORT QgsMapRendererCustomPainterJob : public QgsMapRendererJob QFutureWatcher mFutureWatcher; QgsRenderContext mLabelingRenderContext; QgsPalLabeling* mLabelingEngine; + QgsLabelingEngineV2* mLabelingEngineV2; bool mActive; LayerRenderJobs mLayerJobs; diff --git a/src/core/qgsmaprendererjob.cpp b/src/core/qgsmaprendererjob.cpp index b11e58f046c..9e04eb81ca7 100644 --- a/src/core/qgsmaprendererjob.cpp +++ b/src/core/qgsmaprendererjob.cpp @@ -135,7 +135,7 @@ bool QgsMapRendererJob::reprojectToLayerExtent( const QgsCoordinateTransform* ct -LayerRenderJobs QgsMapRendererJob::prepareJobs( QPainter* painter, QgsPalLabeling* labelingEngine ) +LayerRenderJobs QgsMapRendererJob::prepareJobs( QPainter* painter, QgsPalLabeling* labelingEngine, QgsLabelingEngineV2* labelingEngine2 ) { LayerRenderJobs layerJobs; @@ -217,6 +217,7 @@ LayerRenderJobs QgsMapRendererJob::prepareJobs( QPainter* painter, QgsPalLabelin job.context = QgsRenderContext::fromMapSettings( mSettings ); job.context.setPainter( painter ); job.context.setLabelingEngine( labelingEngine ); + job.context.setLabelingEngineV2( labelingEngine2 ); job.context.setCoordinateTransform( ct ); job.context.setExtent( r1 ); diff --git a/src/core/qgsmaprendererjob.h b/src/core/qgsmaprendererjob.h index 3275702256f..9d86c32be75 100644 --- a/src/core/qgsmaprendererjob.h +++ b/src/core/qgsmaprendererjob.h @@ -29,6 +29,7 @@ #include "qgsgeometrycache.h" +class QgsLabelingEngineV2; class QgsLabelingResults; class QgsMapLayerRenderer; class QgsMapRendererCache; @@ -149,7 +150,7 @@ class CORE_EXPORT QgsMapRendererJob : public QObject static bool reprojectToLayerExtent( const QgsCoordinateTransform* ct, bool layerCrsGeographic, QgsRectangle& extent, QgsRectangle& r2 ); //! @note not available in python bindings - LayerRenderJobs prepareJobs( QPainter* painter, QgsPalLabeling* labelingEngine ); + LayerRenderJobs prepareJobs( QPainter* painter, QgsPalLabeling* labelingEngine, QgsLabelingEngineV2* labelingEngine2 ); //! @note not available in python bindings void cleanupJobs( LayerRenderJobs& jobs ); @@ -158,7 +159,7 @@ class CORE_EXPORT QgsMapRendererJob : public QObject bool needTemporaryImage( QgsMapLayer* ml ); - static void drawLabeling( const QgsMapSettings& settings, QgsRenderContext& renderContext, QgsPalLabeling* labelingEngine, QPainter* painter ); + static void drawLabeling( const QgsMapSettings& settings, QgsRenderContext& renderContext, QgsPalLabeling* labelingEngine, QgsLabelingEngineV2* labelingEngine2, QPainter* painter ); static void drawOldLabeling( const QgsMapSettings& settings, QgsRenderContext& renderContext ); static void drawNewLabeling( const QgsMapSettings& settings, QgsRenderContext& renderContext, QgsPalLabeling* labelingEngine ); diff --git a/src/core/qgsmaprendererparalleljob.cpp b/src/core/qgsmaprendererparalleljob.cpp index 270b8d26ac2..64aff1d02c1 100644 --- a/src/core/qgsmaprendererparalleljob.cpp +++ b/src/core/qgsmaprendererparalleljob.cpp @@ -15,17 +15,20 @@ #include "qgsmaprendererparalleljob.h" +#include "qgslabelingenginev2.h" #include "qgslogger.h" #include "qgsmaplayerrenderer.h" #include "qgspallabeling.h" #include +#define LABELING_V2 QgsMapRendererParallelJob::QgsMapRendererParallelJob( const QgsMapSettings& settings ) : QgsMapRendererQImageJob( settings ) , mStatus( Idle ) , mLabelingEngine( 0 ) + , mLabelingEngineV2( 0 ) { } @@ -38,6 +41,9 @@ QgsMapRendererParallelJob::~QgsMapRendererParallelJob() delete mLabelingEngine; mLabelingEngine = 0; + + delete mLabelingEngineV2; + mLabelingEngineV2 = 0; } void QgsMapRendererParallelJob::start() @@ -52,15 +58,21 @@ void QgsMapRendererParallelJob::start() delete mLabelingEngine; mLabelingEngine = 0; + delete mLabelingEngineV2; + mLabelingEngineV2 = 0; + if ( mSettings.testFlag( QgsMapSettings::DrawLabeling ) ) { +#ifdef LABELING_V2 + mLabelingEngineV2 = new QgsLabelingEngineV2( mSettings ); +#else mLabelingEngine = new QgsPalLabeling; mLabelingEngine->loadEngineSettings(); mLabelingEngine->init( mSettings ); +#endif } - - mLayerJobs = prepareJobs( 0, mLabelingEngine ); + mLayerJobs = prepareJobs( 0, mLabelingEngine, mLabelingEngineV2 ); QgsDebugMsg( QString( "QThreadPool max thread count is %1" ).arg( QThreadPool::globalInstance()->maxThreadCount() ) ); @@ -239,7 +251,7 @@ void QgsMapRendererParallelJob::renderLabelsStatic( QgsMapRendererParallelJob* s try { - drawLabeling( self->mSettings, self->mLabelingRenderContext, self->mLabelingEngine, &painter ); + drawLabeling( self->mSettings, self->mLabelingRenderContext, self->mLabelingEngine, self->mLabelingEngineV2, &painter ); } catch ( QgsException & e ) { diff --git a/src/core/qgsmaprendererparalleljob.h b/src/core/qgsmaprendererparalleljob.h index 968fbd63d29..84939201b2f 100644 --- a/src/core/qgsmaprendererparalleljob.h +++ b/src/core/qgsmaprendererparalleljob.h @@ -65,6 +65,7 @@ class CORE_EXPORT QgsMapRendererParallelJob : public QgsMapRendererQImageJob LayerRenderJobs mLayerJobs; QgsPalLabeling* mLabelingEngine; + QgsLabelingEngineV2* mLabelingEngineV2; QgsRenderContext mLabelingRenderContext; QFuture mLabelingFuture; QFutureWatcher mLabelingFutureWatcher; diff --git a/src/core/qgsrendercontext.h b/src/core/qgsrendercontext.h index 9b98e1d5a7b..21359ed5557 100644 --- a/src/core/qgsrendercontext.h +++ b/src/core/qgsrendercontext.h @@ -30,6 +30,7 @@ class QPainter; class QgsAbstractGeometryV2; class QgsLabelingEngineInterface; +class QgsLabelingEngineV2; class QgsMapSettings; /** \ingroup core @@ -78,6 +79,9 @@ class CORE_EXPORT QgsRenderContext QgsLabelingEngineInterface* labelingEngine() const { return mLabelingEngine; } + //! Get access to new labeling engine (may be NULL) + QgsLabelingEngineV2* labelingEngineV2() const { return mLabelingEngine2; } + QColor selectionColor() const { return mSelectionColor; } /** Returns true if vector selections should be shown in the rendered map @@ -102,6 +106,8 @@ class CORE_EXPORT QgsRenderContext void setPainter( QPainter* p ) {mPainter = p;} void setForceVectorOutput( bool force ) {mForceVectorOutput = force;} void setLabelingEngine( QgsLabelingEngineInterface* iface ) { mLabelingEngine = iface; } + //! Assign new labeling engine + void setLabelingEngineV2( QgsLabelingEngineV2* engine2 ) { mLabelingEngine2 = engine2; } void setSelectionColor( const QColor& color ) { mSelectionColor = color; } /** Sets whether vector selections should be shown in the rendered map @@ -182,6 +188,9 @@ class CORE_EXPORT QgsRenderContext /** Labeling engine (can be NULL)*/ QgsLabelingEngineInterface* mLabelingEngine; + /** Newer labeling engine implementation (can be NULL) */ + QgsLabelingEngineV2* mLabelingEngine2; + /** Whether selection should be shown*/ bool mShowSelection; diff --git a/src/core/qgsvectorlayerdiagramprovider.cpp b/src/core/qgsvectorlayerdiagramprovider.cpp index ea38f3154e2..e507d10da8b 100644 --- a/src/core/qgsvectorlayerdiagramprovider.cpp +++ b/src/core/qgsvectorlayerdiagramprovider.cpp @@ -25,33 +25,34 @@ #include "labelposition.h" -QgsVectorLayerDiagramProvider::QgsVectorLayerDiagramProvider( const QgsDiagramLayerSettings* diagSettings, - const QgsDiagramRendererV2* diagRenderer, - const QString& layerId, - const QgsFields& fields, - const QgsCoordinateReferenceSystem& crs, - QgsAbstractFeatureSource* source, - bool ownsSource ) - : mSettings( *diagSettings ) - , mDiagRenderer( diagRenderer->clone() ) - , mLayerId( layerId ) - , mFields( fields ) - , mLayerCrs( crs ) - , mSource( source ) - , mOwnsSource( ownsSource ) +QgsVectorLayerDiagramProvider::QgsVectorLayerDiagramProvider( + const QgsDiagramLayerSettings* diagSettings, + const QgsDiagramRendererV2* diagRenderer, + const QString& layerId, + const QgsFields& fields, + const QgsCoordinateReferenceSystem& crs, + QgsAbstractFeatureSource* source, + bool ownsSource ) + : mSettings( *diagSettings ) + , mDiagRenderer( diagRenderer->clone() ) + , mLayerId( layerId ) + , mFields( fields ) + , mLayerCrs( crs ) + , mSource( source ) + , mOwnsSource( ownsSource ) { init(); } QgsVectorLayerDiagramProvider::QgsVectorLayerDiagramProvider( QgsVectorLayer* layer ) - : mSettings( *layer->diagramLayerSettings() ) - , mDiagRenderer( layer->diagramRenderer()->clone() ) - , mLayerId( layer->id() ) - , mFields( layer->fields() ) - , mLayerCrs( layer->crs() ) - , mSource( new QgsVectorLayerFeatureSource( layer ) ) - , mOwnsSource( true ) + : mSettings( *layer->diagramLayerSettings() ) + , mDiagRenderer( layer->diagramRenderer()->clone() ) + , mLayerId( layer->id() ) + , mFields( layer->fields() ) + , mLayerCrs( layer->crs() ) + , mSource( new QgsVectorLayerFeatureSource( layer ) ) + , mOwnsSource( true ) { init(); } @@ -142,9 +143,12 @@ QList QgsVectorLayerDiagramProvider::labelFeatures( const QgsM if ( mSettings.yPosColumn != -1 ) attributeNames << mFields.at( mSettings.yPosColumn ).name(); + QgsRectangle layerExtent = context.extent(); + if ( mSettings.ct ) + layerExtent = mSettings.ct->transformBoundingBox( context.extent(), QgsCoordinateTransform::ReverseTransform ); QgsFeatureRequest request; - request.setFilterRect( context.extent() ); + request.setFilterRect( layerExtent ); request.setSubsetOfAttributes( attributeNames, mFields ); QgsFeatureIterator fit = mSource->getFeatures( request ); @@ -213,7 +217,7 @@ QgsLabelFeature* QgsVectorLayerDiagramProvider::registerDiagram( QgsFeature& fea if ( dr ) { QList settingList = dr->diagramSettings(); - if ( settingList.size() > 0 ) + if ( settingList.size() > 0 && settingList.at( 0 ).scaleBasedVisibility ) { double minScale = settingList.at( 0 ).minScaleDenominator; if ( minScale > 0 && context.rendererScale() < minScale ) diff --git a/src/core/qgsvectorlayerlabelprovider.cpp b/src/core/qgsvectorlayerlabelprovider.cpp index ff1d16945b4..71aa0bbe633 100644 --- a/src/core/qgsvectorlayerlabelprovider.cpp +++ b/src/core/qgsvectorlayerlabelprovider.cpp @@ -53,21 +53,25 @@ QgsVectorLayerLabelProvider::QgsVectorLayerLabelProvider( QgsVectorLayer* layer mSettings = QgsVectorLayerLabelSettings::fromLayer( layer ); mLayerId = layer->id(); mFields = layer->fields(); + mCrs = layer->crs(); mSource = new QgsVectorLayerFeatureSource( layer ); init(); } -QgsVectorLayerLabelProvider::QgsVectorLayerLabelProvider( const QgsPalLayerSettings& settings, - const QString& layerId, - const QgsFields& fields, - QgsAbstractFeatureSource* source, - bool ownsSource ) - : mSettings( settings ) - , mLayerId( layerId ) - , mFields( fields ) - , mSource( source ) - , mOwnsSource( ownsSource ) +QgsVectorLayerLabelProvider::QgsVectorLayerLabelProvider( + const QgsPalLayerSettings& settings, + const QString& layerId, + const QgsFields& fields, + const QgsCoordinateReferenceSystem& crs, + QgsAbstractFeatureSource* source, + bool ownsSource ) + : mSettings( settings ) + , mLayerId( layerId ) + , mFields( fields ) + , mCrs( crs ) + , mSource( source ) + , mOwnsSource( ownsSource ) { init(); } @@ -201,8 +205,8 @@ QList QgsVectorLayerLabelProvider::labelFeatures( const QgsMap lyr.xform = &mapSettings.mapToPixel(); lyr.ct = 0; - if ( mapSettings.hasCrsTransformEnabled() && ctx.coordinateTransform() ) - lyr.ct = ctx.coordinateTransform()->clone(); + if ( mapSettings.hasCrsTransformEnabled() ) + lyr.ct = new QgsCoordinateTransform( mCrs, mapSettings.destinationCrs() ); lyr.ptZero = lyr.xform->toMapCoordinates( 0, 0 ); lyr.ptOne = lyr.xform->toMapCoordinates( 1, 0 ); @@ -216,9 +220,12 @@ QList QgsVectorLayerLabelProvider::labelFeatures( const QgsMap lyr.mFeatsSendingToPal = 0; + QgsRectangle layerExtent = ctx.extent(); + if ( lyr.ct ) + layerExtent = lyr.ct->transformBoundingBox( ctx.extent(), QgsCoordinateTransform::ReverseTransform ); QgsFeatureRequest request; - request.setFilterRect( ctx.extent() ); + request.setFilterRect( layerExtent ); request.setSubsetOfAttributes( attrNames, mFields ); QgsFeatureIterator fit = mSource->getFeatures( request ); diff --git a/src/core/qgsvectorlayerlabelprovider.h b/src/core/qgsvectorlayerlabelprovider.h index 195e14004dd..030dd88e21d 100644 --- a/src/core/qgsvectorlayerlabelprovider.h +++ b/src/core/qgsvectorlayerlabelprovider.h @@ -37,6 +37,7 @@ class CORE_EXPORT QgsVectorLayerLabelProvider : public QgsAbstractLabelProvider QgsVectorLayerLabelProvider( const QgsPalLayerSettings& settings, const QString& layerId, const QgsFields& fields, + const QgsCoordinateReferenceSystem& crs, QgsAbstractFeatureSource* source, bool ownsSource ); @@ -57,6 +58,7 @@ class CORE_EXPORT QgsVectorLayerLabelProvider : public QgsAbstractLabelProvider QgsPalLayerSettings mSettings; QString mLayerId; QgsFields mFields; + QgsCoordinateReferenceSystem mCrs; QgsAbstractFeatureSource* mSource; bool mOwnsSource; }; diff --git a/src/core/qgsvectorlayerrenderer.cpp b/src/core/qgsvectorlayerrenderer.cpp index 2d5f49e80eb..f3121f4830f 100644 --- a/src/core/qgsvectorlayerrenderer.cpp +++ b/src/core/qgsvectorlayerrenderer.cpp @@ -27,7 +27,9 @@ #include "qgssymbollayerv2.h" #include "qgssymbolv2.h" #include "qgsvectorlayer.h" +#include "qgsvectorlayerdiagramprovider.h" #include "qgsvectorlayerfeatureiterator.h" +#include "qgsvectorlayerlabelprovider.h" #include "qgspainteffect.h" #include @@ -463,7 +465,16 @@ void QgsVectorLayerRenderer::stopRendererV2( QgsSingleSymbolRendererV2* selRende void QgsVectorLayerRenderer::prepareLabeling( QgsVectorLayer* layer, QStringList& attributeNames ) { if ( !mContext.labelingEngine() ) + { + if ( QgsLabelingEngineV2* engine2 = mContext.labelingEngineV2() ) + { + if ( layer->labelsEnabled() ) + engine2->addProvider( new QgsVectorLayerLabelProvider( layer ) ); + if ( layer->diagramsEnabled() ) + engine2->addProvider( new QgsVectorLayerDiagramProvider( layer ) ); + } return; + } if ( mContext.labelingEngine()->prepareLayer( layer, attributeNames, mContext ) ) { diff --git a/tests/src/core/testqgslabelingenginev2.cpp b/tests/src/core/testqgslabelingenginev2.cpp index b23fb292734..d9f98b383bd 100644 --- a/tests/src/core/testqgslabelingenginev2.cpp +++ b/tests/src/core/testqgslabelingenginev2.cpp @@ -77,8 +77,8 @@ void TestQgsLabelingEngineV2::testBasic() vl->setCustomProperty( "labeling/enabled", true ); vl->setCustomProperty( "labeling/fieldName", "Class" ); - QgsVectorLayerLabelProvider lp( vl ); - QgsLabelingEngineV2 engine( mapSettings, QList() << &lp ); + QgsLabelingEngineV2 engine( mapSettings ); + engine.addProvider( new QgsVectorLayerLabelProvider( vl ) ); //engine.setFlags( QgsLabelingEngineV2::RenderOutlineLabels | QgsLabelingEngineV2::DrawLabelRectOnly ); engine.run( context ); @@ -112,8 +112,8 @@ void TestQgsLabelingEngineV2::testDiagrams() vl->loadNamedStyle( QString( TEST_DATA_DIR ) + "/points_diagrams.qml", res ); Q_ASSERT( res ); - QgsVectorLayerDiagramProvider dp( vl ); - QgsLabelingEngineV2 engine( mapSettings, QList() << &dp ); + QgsLabelingEngineV2 engine( mapSettings ); + engine.addProvider( new QgsVectorLayerDiagramProvider( vl ) ); engine.run( context ); p.end();