From 171f06447a6b78ff2ee7ec7e877450c7990ddc25 Mon Sep 17 00:00:00 2001 From: Nyall Dawson Date: Mon, 15 Jul 2019 19:50:50 +1000 Subject: [PATCH] [callouts] Ensure simple callouts are rendered below all map labels ...instead of being rendered on top of some. For this callout style, we don't want callouts overlapping labels (rather the opposite). But leave API in place to allow other callout styles to render below their associated labels only, as this may be wanted for some styles (e.g. balloon style callouts) --- .../auto_generated/callouts/qgscallout.sip.in | 13 ++++ src/core/callouts/qgscallout.cpp | 5 ++ src/core/callouts/qgscallout.h | 14 +++++ src/core/qgslabelingengine.cpp | 22 +++++++ src/core/qgslabelingengine.h | 14 +++++ src/core/qgsvectorlayerlabelprovider.cpp | 47 ++++++++++----- src/core/qgsvectorlayerlabelprovider.h | 2 + tests/src/core/testqgscallout.cpp | 57 ++++++++++++++++++ .../expected_callout_behind_labels.png | Bin 0 -> 21563 bytes .../expected_manhattan_callout.png | Bin 18887 -> 18986 bytes 10 files changed, 159 insertions(+), 15 deletions(-) create mode 100644 tests/testdata/control_images/callouts/expected_callout_behind_labels/expected_callout_behind_labels.png diff --git a/python/core/auto_generated/callouts/qgscallout.sip.in b/python/core/auto_generated/callouts/qgscallout.sip.in index ae98f031907..7572f3ab130 100644 --- a/python/core/auto_generated/callouts/qgscallout.sip.in +++ b/python/core/auto_generated/callouts/qgscallout.sip.in @@ -46,6 +46,12 @@ relevant symbology elements to render them. MinimumCalloutLength, }; + enum DrawOrder + { + OrderBelowAllLabels, + OrderBelowIndividualLabels, + }; + QgsCallout(); %Docstring Constructor for QgsCallout. @@ -143,6 +149,13 @@ required by any data defined properties associated with the callout. the same render ``context``. %End + virtual DrawOrder drawOrder() const; +%Docstring +Returns the desired drawing order (stacking) to use while rendering this callout. + +The default order is QgsCallout.OrderBelowIndividualLabels. +%End + void render( QgsRenderContext &context, QRectF rect, const double angle, const QgsGeometry &anchor ); %Docstring Renders the callout onto the specified render ``context``. diff --git a/src/core/callouts/qgscallout.cpp b/src/core/callouts/qgscallout.cpp index 3cd72dae532..eb1c5dec38a 100644 --- a/src/core/callouts/qgscallout.cpp +++ b/src/core/callouts/qgscallout.cpp @@ -94,6 +94,11 @@ QSet QgsCallout::referencedFields( const QgsRenderContext &context ) co return mDataDefinedProperties.referencedFields( context.expressionContext() ); } +QgsCallout::DrawOrder QgsCallout::drawOrder() const +{ + return OrderBelowAllLabels; +} + void QgsCallout::render( QgsRenderContext &context, QRectF rect, const double angle, const QgsGeometry &anchor ) { if ( !mEnabled ) diff --git a/src/core/callouts/qgscallout.h b/src/core/callouts/qgscallout.h index c130c20913e..e71e2ebb721 100644 --- a/src/core/callouts/qgscallout.h +++ b/src/core/callouts/qgscallout.h @@ -71,6 +71,13 @@ class CORE_EXPORT QgsCallout MinimumCalloutLength, //!< Minimum length of callouts }; + //! Options for draw order (stacking) of callouts + enum DrawOrder + { + OrderBelowAllLabels, //!< Render callouts below all labels + OrderBelowIndividualLabels, //!< Render callouts below their individual associated labels, some callouts may be drawn over other labels + }; + /** * Constructor for QgsCallout. */ @@ -159,6 +166,13 @@ class CORE_EXPORT QgsCallout */ virtual QSet< QString > referencedFields( const QgsRenderContext &context ) const; + /** + * Returns the desired drawing order (stacking) to use while rendering this callout. + * + * The default order is QgsCallout::OrderBelowIndividualLabels. + */ + virtual DrawOrder drawOrder() const; + /** * Renders the callout onto the specified render \a context. * diff --git a/src/core/qgslabelingengine.cpp b/src/core/qgslabelingengine.cpp index f912f4b0c28..86524322c36 100644 --- a/src/core/qgslabelingengine.cpp +++ b/src/core/qgslabelingengine.cpp @@ -357,6 +357,23 @@ void QgsLabelingEngine::run( QgsRenderContext &context ) provider->startRender( context ); } + // draw label backgrounds + for ( pal::LabelPosition *label : qgis::as_const( labels ) ) + { + if ( context.renderingStopped() ) + break; + + QgsLabelFeature *lf = label->getFeaturePart()->feature(); + if ( !lf ) + { + continue; + } + + context.expressionContext().setFeature( lf->feature() ); + context.expressionContext().setFields( lf->feature().fields() ); + lf->provider()->drawLabelBackground( context, label ); + } + // draw the labels for ( pal::LabelPosition *label : qgis::as_const( labels ) ) { @@ -412,6 +429,11 @@ QgsAbstractLabelProvider::QgsAbstractLabelProvider( QgsMapLayer *layer, const QS { } +void QgsAbstractLabelProvider::drawLabelBackground( QgsRenderContext &, pal::LabelPosition * ) const +{ + +} + void QgsAbstractLabelProvider::startRender( QgsRenderContext &context ) { const auto subproviders = subProviders(); diff --git a/src/core/qgslabelingengine.h b/src/core/qgslabelingengine.h index 44f2252d234..b4a5c024773 100644 --- a/src/core/qgslabelingengine.h +++ b/src/core/qgslabelingengine.h @@ -73,6 +73,20 @@ class CORE_EXPORT QgsAbstractLabelProvider */ virtual void drawLabel( QgsRenderContext &context, pal::LabelPosition *label ) const = 0; + /** + * Draw the background for the specified \a label. + * + * This is called in turn for each label provider before any actual labels are rendered, + * and allows the provider to render content which should be drawn below ALL map labels + * (such as background rectangles or callout lines). + * + * Before any calls to drawLabelBackground(), a provider should be prepared for rendering by a call to + * startRender() and a corresponding call to stopRender(). + * + * \since QGIS 3.10 + */ + virtual void drawLabelBackground( QgsRenderContext &context, pal::LabelPosition *label ) const; + /** * To be called before rendering of labels begins. Must be accompanied by * a corresponding call to stopRender() diff --git a/src/core/qgsvectorlayerlabelprovider.cpp b/src/core/qgsvectorlayerlabelprovider.cpp index aba16fb8dc0..c4b5ce10666 100644 --- a/src/core/qgsvectorlayerlabelprovider.cpp +++ b/src/core/qgsvectorlayerlabelprovider.cpp @@ -278,6 +278,36 @@ QgsGeometry QgsVectorLayerLabelProvider::getPointObstacleGeometry( QgsFeature &f return QgsGeometry( std::move( obstacleGeom ) ); } +void QgsVectorLayerLabelProvider::drawLabelBackground( QgsRenderContext &context, LabelPosition *label ) const +{ + if ( !mSettings.drawLabels ) + return; + + // render callout + if ( mSettings.callout() && mSettings.callout()->drawOrder() == QgsCallout::OrderBelowAllLabels ) + { + drawCallout( context, label ); + } +} + +void QgsVectorLayerLabelProvider::drawCallout( QgsRenderContext &context, pal::LabelPosition *label ) const +{ + context.expressionContext().setOriginalValueVariable( mSettings.callout()->enabled() ); + const bool enabled = mSettings.dataDefinedProperties().valueAsBool( QgsPalLayerSettings::CalloutDraw, context.expressionContext(), mSettings.callout()->enabled() ); + if ( enabled ) + { + QgsMapToPixel xform = context.mapToPixel(); + xform.setMapRotation( 0, 0, 0 ); + QPointF outPt = xform.transform( label->getX(), label->getY() ).toQPointF(); + QgsPointXY outPt2 = xform.transform( label->getX() + label->getWidth(), label->getY() + label->getHeight() ); + QRectF rect( outPt.x(), outPt.y(), outPt2.x() - outPt.x(), outPt2.y() - outPt.y() ); + + QgsGeometry g( QgsGeos::fromGeos( label->getFeaturePart()->feature()->geometry() ) ); + g.transform( xform.transform() ); + mSettings.callout()->render( context, rect, label->getAlpha() * 180 / M_PI, g ); + } +} + void QgsVectorLayerLabelProvider::drawLabel( QgsRenderContext &context, pal::LabelPosition *label ) const { if ( !mSettings.drawLabels ) @@ -349,22 +379,9 @@ void QgsVectorLayerLabelProvider::drawLabel( QgsRenderContext &context, pal::Lab // (backgrounds -> text) // render callout - if ( mSettings.callout() )// && label->getFeaturePart()->hasFixedPosition() ) + if ( mSettings.callout() && mSettings.callout()->drawOrder() == QgsCallout::OrderBelowIndividualLabels ) { - context.expressionContext().setOriginalValueVariable( mSettings.callout()->enabled() ); - const bool enabled = mSettings.dataDefinedProperties().valueAsBool( QgsPalLayerSettings::CalloutDraw, context.expressionContext(), mSettings.callout()->enabled() ); - if ( enabled ) - { - QgsMapToPixel xform = context.mapToPixel(); - xform.setMapRotation( 0, 0, 0 ); - QPointF outPt = xform.transform( label->getX(), label->getY() ).toQPointF(); - QgsPointXY outPt2 = xform.transform( label->getX() + label->getWidth(), label->getY() + label->getHeight() ); - QRectF rect( outPt.x(), outPt.y(), outPt2.x() - outPt.x(), outPt2.y() - outPt.y() ); - - QgsGeometry g( QgsGeos::fromGeos( label->getFeaturePart()->feature()->geometry() ) ); - g.transform( xform.transform() ); - mSettings.callout()->render( context, rect, label->getAlpha() * 180 / M_PI, g ); - } + drawCallout( context, label ); } if ( tmpLyr.format().shadow().enabled() && tmpLyr.format().shadow().shadowPlacement() == QgsTextShadowSettings::ShadowLowest ) diff --git a/src/core/qgsvectorlayerlabelprovider.h b/src/core/qgsvectorlayerlabelprovider.h index 0ca365ad710..8bf97579871 100644 --- a/src/core/qgsvectorlayerlabelprovider.h +++ b/src/core/qgsvectorlayerlabelprovider.h @@ -51,6 +51,7 @@ class CORE_EXPORT QgsVectorLayerLabelProvider : public QgsAbstractLabelProvider QList labelFeatures( QgsRenderContext &context ) override; + void drawLabelBackground( QgsRenderContext &context, pal::LabelPosition *label ) const override; void drawLabel( QgsRenderContext &context, pal::LabelPosition *label ) const override; void startRender( QgsRenderContext &context ) override; void stopRender( QgsRenderContext &context ) override; @@ -118,6 +119,7 @@ class CORE_EXPORT QgsVectorLayerLabelProvider : public QgsAbstractLabelProvider private: friend class TestQgsLabelingEngine; + void drawCallout( QgsRenderContext &context, pal::LabelPosition *label ) const; }; #endif // QGSVECTORLAYERLABELPROVIDER_H diff --git a/tests/src/core/testqgscallout.cpp b/tests/src/core/testqgscallout.cpp index b5ff27a029c..9a6de280be9 100644 --- a/tests/src/core/testqgscallout.cpp +++ b/tests/src/core/testqgscallout.cpp @@ -105,6 +105,7 @@ class TestQgsCallout: public QObject void calloutDataDefinedSymbol(); void calloutMinimumDistance(); void calloutDataDefinedMinimumDistance(); + void calloutBehindLabel(); void manhattan(); void manhattanRotated(); @@ -639,6 +640,62 @@ void TestQgsCallout::calloutDataDefinedMinimumDistance() QVERIFY( imageCheck( "callout_data_defined_minimum_length", img, 20 ) ); } +void TestQgsCallout::calloutBehindLabel() +{ + // test that callouts are rendered below labels + QSize size( 640, 480 ); + QgsMapSettings mapSettings; + mapSettings.setOutputSize( size ); + mapSettings.setExtent( vl->extent() ); + mapSettings.setLayers( QList() << vl ); + mapSettings.setOutputDpi( 96 ); + mapSettings.setRotation( 45 ); + + QgsMapRendererSequentialJob job( mapSettings ); + job.start(); + job.waitForFinished(); + + QImage img = job.renderedImage(); + + QPainter p( &img ); + QgsRenderContext context = QgsRenderContext::fromMapSettings( mapSettings ); + context.setPainter( &p ); + + QgsPalLayerSettings settings; + settings.fieldName = QStringLiteral( "Class" ); + settings.placement = QgsPalLayerSettings::AroundPoint; + settings.dataDefinedProperties().setProperty( QgsPalLayerSettings::PositionX, QgsProperty::fromExpression( QStringLiteral( "case when $id = 1 then %1 end" ).arg( mapSettings.extent().center().x() ) ) ); + settings.dataDefinedProperties().setProperty( QgsPalLayerSettings::PositionY, QgsProperty::fromExpression( QStringLiteral( "case when $id = 1 then %1 end" ).arg( mapSettings.extent().center().y() ) ) ); + settings.dataDefinedProperties().setProperty( QgsPalLayerSettings::ZIndex, QgsProperty::fromExpression( QStringLiteral( "100 - $id" ) ) ); + + QgsTextFormat format; + format.setFont( QgsFontUtils::getStandardTestFont( QStringLiteral( "Bold" ) ).family() ); + format.setSize( 12 ); + format.setNamedStyle( QStringLiteral( "Bold" ) ); + format.setColor( QColor( 0, 0, 0 ) ); + settings.setFormat( format ); + + QgsSimpleLineCallout *callout = new QgsSimpleLineCallout(); + callout->setEnabled( true ); + callout->lineSymbol()->setWidth( 2 ); + callout->lineSymbol()->setColor( QColor( 255, 100, 100 ) ); + + settings.setCallout( callout ); + + vl->setLabeling( new QgsVectorLayerSimpleLabeling( settings ) ); // TODO: this should not be necessary! + vl->setLabelsEnabled( true ); + + QgsLabelingEngine engine; + engine.setMapSettings( mapSettings ); + engine.addProvider( new QgsVectorLayerLabelProvider( vl, QString(), true, &settings ) ); + //engine.setFlags( QgsLabelingEngine::RenderOutlineLabels | QgsLabelingEngine::DrawLabelRectOnly ); + engine.run( context ); + + p.end(); + + QVERIFY( imageCheck( "callout_behind_labels", img, 20 ) ); +} + void TestQgsCallout::manhattan() { QSize size( 640, 480 ); diff --git a/tests/testdata/control_images/callouts/expected_callout_behind_labels/expected_callout_behind_labels.png b/tests/testdata/control_images/callouts/expected_callout_behind_labels/expected_callout_behind_labels.png new file mode 100644 index 0000000000000000000000000000000000000000..a61e7f64f789500e238b3488df1358c8b6d609d6 GIT binary patch literal 21563 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