From 881e655a9c909151dcacada40447544a3a86c053 Mon Sep 17 00:00:00 2001 From: Damiano Lombardi Date: Fri, 3 Sep 2021 20:46:20 +0200 Subject: [PATCH 1/4] Make rotate label tool work with label not pinned or dd moved fix #43967 --- src/app/labeling/qgsmaptoollabel.cpp | 12 ++--------- src/app/labeling/qgsmaptoollabel.h | 2 +- src/app/labeling/qgsmaptoolmovelabel.cpp | 3 +-- src/app/labeling/qgsmaptoolpinlabels.cpp | 2 +- src/app/labeling/qgsmaptoolrotatelabel.cpp | 25 ++-------------------- src/app/labeling/qgsmaptoolrotatelabel.h | 2 -- 6 files changed, 7 insertions(+), 39 deletions(-) diff --git a/src/app/labeling/qgsmaptoollabel.cpp b/src/app/labeling/qgsmaptoollabel.cpp index 5d416c5fd41b..53fa6b99ef23 100644 --- a/src/app/labeling/qgsmaptoollabel.cpp +++ b/src/app/labeling/qgsmaptoollabel.cpp @@ -203,7 +203,7 @@ void QgsMapToolLabel::createRubberBands() //fixpoint rubber band QgsPointXY fixPoint; - if ( currentLabelRotationPoint( fixPoint, false, false ) ) + if ( currentLabelRotationPoint( fixPoint, false ) ) { if ( mCanvas ) { @@ -389,7 +389,7 @@ bool QgsMapToolLabel::currentLabelPreserveRotation() return true; // default, so there is no accidental data loss } -bool QgsMapToolLabel::currentLabelRotationPoint( QgsPointXY &pos, bool ignoreUpsideDown, bool rotatingUnpinned ) +bool QgsMapToolLabel::currentLabelRotationPoint( QgsPointXY &pos, bool ignoreUpsideDown ) { QVector cornerPoints = mCurrentLabel.pos.cornerPoints; if ( cornerPoints.size() < 4 ) @@ -418,14 +418,6 @@ bool QgsMapToolLabel::currentLabelRotationPoint( QgsPointXY &pos, bool ignoreUps QString haliString, valiString; currentAlignment( haliString, valiString ); - // rotate unpinned labels (i.e. no hali/vali settings) as if hali/vali was Center/Half - if ( rotatingUnpinned ) - { - haliString = QStringLiteral( "Center" ); - valiString = QStringLiteral( "Half" ); - } - -// QFont labelFont = labelFontCurrentFeature(); QFontMetricsF labelFontMetrics( mCurrentLabel.pos.labelFont ); // NOTE: this assumes the label corner points comprise a rectangle and that the diff --git a/src/app/labeling/qgsmaptoollabel.h b/src/app/labeling/qgsmaptoollabel.h index 2b12078e9ea1..467c0f1d99e7 100644 --- a/src/app/labeling/qgsmaptoollabel.h +++ b/src/app/labeling/qgsmaptoollabel.h @@ -138,7 +138,7 @@ class APP_EXPORT QgsMapToolLabel: public QgsMapToolAdvancedDigitizing * \param ignoreUpsideDown treat label as right-side-up * \returns TRUE in case of success */ - bool currentLabelRotationPoint( QgsPointXY &pos, bool ignoreUpsideDown = false, bool rotatingUnpinned = false ); + bool currentLabelRotationPoint( QgsPointXY &pos, bool ignoreUpsideDown = false ); //! Creates label / feature / fixpoint rubber bands for the current label position void createRubberBands(); diff --git a/src/app/labeling/qgsmaptoolmovelabel.cpp b/src/app/labeling/qgsmaptoolmovelabel.cpp index 5da765f60dc1..9861f4b77c52 100644 --- a/src/app/labeling/qgsmaptoolmovelabel.cpp +++ b/src/app/labeling/qgsmaptoolmovelabel.cpp @@ -169,7 +169,6 @@ void QgsMapToolMoveLabel::cadCanvasPressEvent( QgsMapMouseEvent *e ) if ( !labelAtPosition( e, labelPos ) ) { mCurrentLabel = LabelDetails(); - return; } @@ -241,7 +240,7 @@ void QgsMapToolMoveLabel::cadCanvasPressEvent( QgsMapMouseEvent *e ) mStartPointMapCoords = e->mapPoint(); QgsPointXY referencePoint; - if ( !currentLabelRotationPoint( referencePoint, !currentLabelPreserveRotation(), false ) ) + if ( !currentLabelRotationPoint( referencePoint, !currentLabelPreserveRotation() ) ) { referencePoint.setX( mCurrentLabel.pos.labelRect.xMinimum() ); referencePoint.setY( mCurrentLabel.pos.labelRect.yMinimum() ); diff --git a/src/app/labeling/qgsmaptoolpinlabels.cpp b/src/app/labeling/qgsmaptoolpinlabels.cpp index f70bc58409e9..07a452bd0ada 100644 --- a/src/app/labeling/qgsmaptoolpinlabels.cpp +++ b/src/app/labeling/qgsmaptoolpinlabels.cpp @@ -380,7 +380,7 @@ bool QgsMapToolPinLabels::pinUnpinCurrentLabel( bool pin ) // QgsPointXY labelpoint = labelpos.cornerPoints.at( 0 ); QgsPointXY referencePoint; - if ( !currentLabelRotationPoint( referencePoint, !preserveRot, false ) ) + if ( !currentLabelRotationPoint( referencePoint, !preserveRot ) ) { referencePoint.setX( labelpos.labelRect.xMinimum() ); referencePoint.setY( labelpos.labelRect.yMinimum() ); diff --git a/src/app/labeling/qgsmaptoolrotatelabel.cpp b/src/app/labeling/qgsmaptoolrotatelabel.cpp index 4b350ecc3317..370e225d2211 100644 --- a/src/app/labeling/qgsmaptoolrotatelabel.cpp +++ b/src/app/labeling/qgsmaptoolrotatelabel.cpp @@ -104,19 +104,9 @@ void QgsMapToolRotateLabel::canvasPressEvent( QgsMapMouseEvent *e ) if ( !mCurrentLabel.valid ) return; - // only rotate non-pinned OverPoint placements until other placements are supported in pal::Feature - - if ( !mCurrentLabel.pos.isPinned - && mCurrentLabel.settings.placement != QgsPalLayerSettings::OverPoint ) - { - return; - } - - // rotate unpinned labels (i.e. no hali/vali settings) as if hali/vali was Center/Half - if ( !currentLabelRotationPoint( mRotationPoint, false, !mCurrentLabel.pos.isPinned ) ) - { + // Get label rotation point + if ( !currentLabelRotationPoint( mRotationPoint, false ) ) return; - } { mCurrentMouseAzimuth = convertAzimuth( mRotationPoint.azimuth( toMapCoordinates( e->pos() ) ) ); @@ -295,17 +285,6 @@ void QgsMapToolRotateLabel::keyReleaseEvent( QKeyEvent *e ) } } -bool QgsMapToolRotateLabel::canModifyLabel( const QgsMapToolLabel::LabelDetails &label ) -{ - // only rotate non-pinned OverPoint placements until other placements are supported in pal::Feature - - if ( !label.pos.isPinned - && label.settings.placement != QgsPalLayerSettings::OverPoint ) - return false; - - return true; -} - int QgsMapToolRotateLabel::roundTo15Degrees( double n ) { const int m = static_cast< int >( n / 15.0 + 0.5 ); diff --git a/src/app/labeling/qgsmaptoolrotatelabel.h b/src/app/labeling/qgsmaptoolrotatelabel.h index 54f30a3cde01..061f8dd686fd 100644 --- a/src/app/labeling/qgsmaptoolrotatelabel.h +++ b/src/app/labeling/qgsmaptoolrotatelabel.h @@ -37,8 +37,6 @@ class APP_EXPORT QgsMapToolRotateLabel: public QgsMapToolLabel protected: - bool canModifyLabel( const LabelDetails &label ) override; - static int roundTo15Degrees( double n ); //! Converts azimuth value so that 0 is corresponds to East static double convertAzimuth( double a ); From 3d520647074bfb2e5f80ec08b56f7e62db5fb1f7 Mon Sep 17 00:00:00 2001 From: Damiano Lombardi Date: Wed, 15 Sep 2021 22:26:40 +0200 Subject: [PATCH 2/4] Fix cartographic&around point rotated label candidate creation --- src/core/labeling/qgspallabeling.cpp | 13 +--- src/core/pal/feature.cpp | 58 +++++++++++------- .../expected_label_rotate_unit.png | Bin 24943 -> 24717 bytes ...eling_rotation_based_orientation_point.png | Bin 28704 -> 28454 bytes 4 files changed, 38 insertions(+), 33 deletions(-) diff --git a/src/core/labeling/qgspallabeling.cpp b/src/core/labeling/qgspallabeling.cpp index 6a8bd176ff09..dc994e736c92 100644 --- a/src/core/labeling/qgspallabeling.cpp +++ b/src/core/labeling/qgspallabeling.cpp @@ -2331,8 +2331,7 @@ std::unique_ptr QgsPalLayerSettings::registerFeatureWithDetails offsetY = context.convertToMapUnits( -yOff, offUnit, labelOffsetMapUnitScale ); // layer defined rotation? - // only rotate non-pinned OverPoint placements until other placements are supported in pal::Feature - if ( placement == QgsPalLayerSettings::OverPoint && !qgsDoubleNear( angleOffset, 0.0 ) ) + if ( !qgsDoubleNear( angleOffset, 0.0 ) ) { layerDefinedRotation = true; angle = ( 360 - angleOffset ) * M_PI / 180; // convert to radians counterclockwise @@ -2475,16 +2474,6 @@ std::unique_ptr QgsPalLayerSettings::registerFeatureWithDetails xPos += xdiff; yPos += ydiff; } - else - { - anchorPosition = QgsPointXY( xPos, yPos ); - - // only rotate non-pinned OverPoint placements until other placements are supported in pal::Feature - if ( dataDefinedRotation && placement != QgsPalLayerSettings::OverPoint ) - { - angle = 0.0; - } - } } } } diff --git a/src/core/pal/feature.cpp b/src/core/pal/feature.cpp index bbbcae52cd0c..c7899181a466 100644 --- a/src/core/pal/feature.cpp +++ b/src/core/pal/feature.cpp @@ -430,11 +430,12 @@ std::unique_ptr FeaturePart::createCandidatePointOnSurface( Point return std::make_unique< LabelPosition >( 0, px, py, getLabelWidth(), getLabelHeight(), 0.0, 0.0, this, false, LabelPosition::QuadrantOver ); } -void createCandidateAtOrderedPositionOverPoint( double &labelX, double &labelY, LabelPosition::Quadrant &quadrant, double x, double y, double labelWidth, double labelHeight, QgsPalLayerSettings::PredefinedPointPosition position, double distanceToLabel, const QgsMargins &visualMargin, double symbolWidthOffset, double symbolHeightOffset ) +void createCandidateAtOrderedPositionOverPoint( double &labelX, double &labelY, LabelPosition::Quadrant &quadrant, double x, double y, double labelWidth, double labelHeight, QgsPalLayerSettings::PredefinedPointPosition position, double distanceToLabel, const QgsMargins &visualMargin, double symbolWidthOffset, double symbolHeightOffset, double angle ) { double alpha = 0.0; double deltaX = 0; double deltaY = 0; + switch ( position ) { case QgsPalLayerSettings::TopLeft: @@ -522,6 +523,12 @@ void createCandidateAtOrderedPositionOverPoint( double &labelX, double &labelY, break; } + // Take care of the label angle when creating candidates. See pr comments #44944 for details + // https://github.com/qgis/QGIS/pull/44944#issuecomment-914670088 + QMatrix transformMatrix; + transformMatrix.rotate( angle * QgsUnitTypes::fromUnitToUnitFactor( QgsUnitTypes::AngleRadians, QgsUnitTypes::AngleDegrees ) ); + transformMatrix.map( deltaX, deltaY, &deltaX, &deltaY ); + //have bearing, distance - calculate reference point double referenceX = std::cos( alpha ) * distanceToLabel + x; double referenceY = std::sin( alpha ) * distanceToLabel + y; @@ -552,7 +559,7 @@ std::size_t FeaturePart::createCandidatesAtOrderedPositionsOverPoint( double x, double labelX = 0; double labelY = 0; - createCandidateAtOrderedPositionOverPoint( labelX, labelY, quadrant, x, y, labelWidth, labelHeight, position, distanceToLabel, visualMargin, symbolWidthOffset, symbolHeightOffset ); + createCandidateAtOrderedPositionOverPoint( labelX, labelY, quadrant, x, y, labelWidth, labelHeight, position, distanceToLabel, visualMargin, symbolWidthOffset, symbolHeightOffset, angle ); if ( ! mLF->permissibleZonePrepared() || GeomFunction::containsCandidate( mLF->permissibleZonePrepared(), labelX, labelY, labelWidth, labelHeight, angle ) ) { @@ -615,8 +622,8 @@ std::size_t FeaturePart::createCandidatesAroundPoint( double x, double y, std::v double angleToCandidate; for ( i = 0, angleToCandidate = M_PI_4; i < maxNumberCandidates; i++, angleToCandidate += candidateAngleIncrement ) { - double labelX = x; - double labelY = y; + double deltaX = 0.0; + double deltaY = 0.0; if ( angleToCandidate > a360 ) angleToCandidate -= a360; @@ -625,62 +632,71 @@ std::size_t FeaturePart::createCandidatesAroundPoint( double x, double y, std::v if ( angleToCandidate < gamma1 || angleToCandidate > a360 - gamma1 ) // on the right { - labelX += distanceToLabel; + deltaX = distanceToLabel; double iota = ( angleToCandidate + gamma1 ); if ( iota > a360 - gamma1 ) iota -= a360; //ly += -yrm/2.0 + tan(alpha)*(distlabel + xrm/2); - labelY += -labelHeight + labelHeight * iota / ( 2 * gamma1 ); + deltaY = -labelHeight + labelHeight * iota / ( 2 * gamma1 ); quadrant = LabelPosition::QuadrantRight; } else if ( angleToCandidate < a90 - gamma2 ) // top-right { - labelX += distanceToLabel * std::cos( angleToCandidate ); - labelY += distanceToLabel * std::sin( angleToCandidate ); + deltaX = distanceToLabel * std::cos( angleToCandidate ); + deltaY = distanceToLabel * std::sin( angleToCandidate ); quadrant = LabelPosition::QuadrantAboveRight; } else if ( angleToCandidate < a90 + gamma2 ) // top { //lx += -xrm/2.0 - tan(alpha+a90)*(distlabel + yrm/2); - labelX += -labelWidth * ( angleToCandidate - a90 + gamma2 ) / ( 2 * gamma2 ); - labelY += distanceToLabel; + deltaX = -labelWidth * ( angleToCandidate - a90 + gamma2 ) / ( 2 * gamma2 ); + deltaY = distanceToLabel; quadrant = LabelPosition::QuadrantAbove; } else if ( angleToCandidate < a180 - gamma1 ) // top left { - labelX += distanceToLabel * std::cos( angleToCandidate ) - labelWidth; - labelY += distanceToLabel * std::sin( angleToCandidate ); + deltaX = distanceToLabel * std::cos( angleToCandidate ) - labelWidth; + deltaY = distanceToLabel * std::sin( angleToCandidate ); quadrant = LabelPosition::QuadrantAboveLeft; } else if ( angleToCandidate < a180 + gamma1 ) // left { - labelX += -distanceToLabel - labelWidth; + deltaX = -distanceToLabel - labelWidth; //ly += -yrm/2.0 - tan(alpha)*(distlabel + xrm/2); - labelY += - ( angleToCandidate - a180 + gamma1 ) * labelHeight / ( 2 * gamma1 ); + deltaY = - ( angleToCandidate - a180 + gamma1 ) * labelHeight / ( 2 * gamma1 ); quadrant = LabelPosition::QuadrantLeft; } else if ( angleToCandidate < a270 - gamma2 ) // down - left { - labelX += distanceToLabel * std::cos( angleToCandidate ) - labelWidth; - labelY += distanceToLabel * std::sin( angleToCandidate ) - labelHeight; + deltaX = distanceToLabel * std::cos( angleToCandidate ) - labelWidth; + deltaY = distanceToLabel * std::sin( angleToCandidate ) - labelHeight; quadrant = LabelPosition::QuadrantBelowLeft; } else if ( angleToCandidate < a270 + gamma2 ) // down { - labelY += -distanceToLabel - labelHeight; + deltaY = -distanceToLabel - labelHeight; //lx += -xrm/2.0 + tan(alpha+a90)*(distlabel + yrm/2); - labelX += -labelWidth + ( angleToCandidate - a270 + gamma2 ) * labelWidth / ( 2 * gamma2 ); + deltaX = -labelWidth + ( angleToCandidate - a270 + gamma2 ) * labelWidth / ( 2 * gamma2 ); quadrant = LabelPosition::QuadrantBelow; } else if ( angleToCandidate < a360 ) // down - right { - labelX += distanceToLabel * std::cos( angleToCandidate ); - labelY += distanceToLabel * std::sin( angleToCandidate ) - labelHeight; + deltaX = distanceToLabel * std::cos( angleToCandidate ); + deltaY = distanceToLabel * std::sin( angleToCandidate ) - labelHeight; quadrant = LabelPosition::QuadrantBelowRight; } + // Take care of the label angle when creating candidates. See pr comments #44944 for details + // https://github.com/qgis/QGIS/pull/44944#issuecomment-914670088 + QMatrix transformMatrix; + transformMatrix.rotate( angle * QgsUnitTypes::fromUnitToUnitFactor( QgsUnitTypes::AngleRadians, QgsUnitTypes::AngleDegrees ) ); + transformMatrix.map( deltaX, deltaY, &deltaX, &deltaY ); + + double labelX = x + deltaX; + double labelY = y + deltaY; + double cost; if ( maxNumberCandidates == 1 ) @@ -1826,7 +1842,7 @@ std::size_t FeaturePart::createCandidatesOutsidePolygon( std::vector candidate = std::make_unique< LabelPosition >( i, labelX, labelY, labelWidth, labelHeight, labelAngle, 0, this, false, quadrant ); if ( candidate->intersects( preparedBuffer.get() ) ) diff --git a/tests/testdata/control_images/labelingengine/expected_label_rotate_unit/expected_label_rotate_unit.png b/tests/testdata/control_images/labelingengine/expected_label_rotate_unit/expected_label_rotate_unit.png index b66b27ef79687b93151c6c208105c616e06d7d30..97b95cba2bf2fe6d8a34b83e83191bd54f040260 100644 GIT binary patch literal 24717 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

7ZwooQ8J+wtjBSz)2?`bT9XnNh1K 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 Ra4->&>K#o~zJgi6{{Te}Kk5Jg diff --git a/tests/testdata/control_images/labelingengine/expected_labeling_rotation_based_orientation_point/expected_labeling_rotation_based_orientation_point.png b/tests/testdata/control_images/labelingengine/expected_labeling_rotation_based_orientation_point/expected_labeling_rotation_based_orientation_point.png index 61489c05e80934ad04caf82e2a2c4aa33781b5e8..fe71d4a0624bfeb18d22923d65db58d56453be47 100644 GIT binary patch literal 28454 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 Date: Thu, 16 Sep 2021 08:02:16 +0200 Subject: [PATCH 3/4] Replace QMatrix with QTransform --- src/core/pal/feature.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/core/pal/feature.cpp b/src/core/pal/feature.cpp index c7899181a466..7c57aa467a53 100644 --- a/src/core/pal/feature.cpp +++ b/src/core/pal/feature.cpp @@ -525,9 +525,9 @@ void createCandidateAtOrderedPositionOverPoint( double &labelX, double &labelY, // Take care of the label angle when creating candidates. See pr comments #44944 for details // https://github.com/qgis/QGIS/pull/44944#issuecomment-914670088 - QMatrix transformMatrix; - transformMatrix.rotate( angle * QgsUnitTypes::fromUnitToUnitFactor( QgsUnitTypes::AngleRadians, QgsUnitTypes::AngleDegrees ) ); - transformMatrix.map( deltaX, deltaY, &deltaX, &deltaY ); + QTransform transformRotation; + transformRotation.rotate( angle * QgsUnitTypes::fromUnitToUnitFactor( QgsUnitTypes::AngleRadians, QgsUnitTypes::AngleDegrees ) ); + transformRotation.map( deltaX, deltaY, &deltaX, &deltaY ); //have bearing, distance - calculate reference point double referenceX = std::cos( alpha ) * distanceToLabel + x; @@ -690,9 +690,9 @@ std::size_t FeaturePart::createCandidatesAroundPoint( double x, double y, std::v // Take care of the label angle when creating candidates. See pr comments #44944 for details // https://github.com/qgis/QGIS/pull/44944#issuecomment-914670088 - QMatrix transformMatrix; - transformMatrix.rotate( angle * QgsUnitTypes::fromUnitToUnitFactor( QgsUnitTypes::AngleRadians, QgsUnitTypes::AngleDegrees ) ); - transformMatrix.map( deltaX, deltaY, &deltaX, &deltaY ); + QTransform transformRotation; + transformRotation.rotate( angle * QgsUnitTypes::fromUnitToUnitFactor( QgsUnitTypes::AngleRadians, QgsUnitTypes::AngleDegrees ) ); + transformRotation.map( deltaX, deltaY, &deltaX, &deltaY ); double labelX = x + deltaX; double labelY = y + deltaY; From c0a9b04c014e9a454f3eee3ebd09d9a5452d81d7 Mon Sep 17 00:00:00 2001 From: Nyall Dawson Date: Fri, 17 Sep 2021 14:12:41 +1000 Subject: [PATCH 4/4] Apply suggestions from code review --- src/core/pal/feature.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/pal/feature.cpp b/src/core/pal/feature.cpp index 7c57aa467a53..805c172d82e0 100644 --- a/src/core/pal/feature.cpp +++ b/src/core/pal/feature.cpp @@ -526,7 +526,7 @@ void createCandidateAtOrderedPositionOverPoint( double &labelX, double &labelY, // Take care of the label angle when creating candidates. See pr comments #44944 for details // https://github.com/qgis/QGIS/pull/44944#issuecomment-914670088 QTransform transformRotation; - transformRotation.rotate( angle * QgsUnitTypes::fromUnitToUnitFactor( QgsUnitTypes::AngleRadians, QgsUnitTypes::AngleDegrees ) ); + transformRotation.rotate( angle * 180 / M_PI ); transformRotation.map( deltaX, deltaY, &deltaX, &deltaY ); //have bearing, distance - calculate reference point @@ -691,7 +691,7 @@ std::size_t FeaturePart::createCandidatesAroundPoint( double x, double y, std::v // Take care of the label angle when creating candidates. See pr comments #44944 for details // https://github.com/qgis/QGIS/pull/44944#issuecomment-914670088 QTransform transformRotation; - transformRotation.rotate( angle * QgsUnitTypes::fromUnitToUnitFactor( QgsUnitTypes::AngleRadians, QgsUnitTypes::AngleDegrees ) ); + transformRotation.rotate( angle * 180 / M_PI ); transformRotation.map( deltaX, deltaY, &deltaX, &deltaY ); double labelX = x + deltaX;