@@ -151,7 +151,7 @@ QColor QgsTextRendererUtils::readColor( QgsVectorLayer *layer, const QString &pr
151
151
return QColor ( r, g, b, a );
152
152
}
153
153
154
- std::unique_ptr< QgsTextRendererUtils::CurvePlacementProperties > QgsTextRendererUtils::generateCurvedTextPlacement ( const QgsPrecalculatedTextMetrics &metrics, const QPolygonF &line, double offsetAlongLine, LabelLineDirection direction, double maxConcaveAngle, double maxConvexAngle, bool uprightOnly )
154
+ std::unique_ptr< QgsTextRendererUtils::CurvePlacementProperties > QgsTextRendererUtils::generateCurvedTextPlacement ( const QgsPrecalculatedTextMetrics &metrics, const QPolygonF &line, double offsetAlongLine, LabelLineDirection direction, double maxConcaveAngle, double maxConvexAngle, CurvedTextFlags flags )
155
155
{
156
156
const int numPoints = line.size ();
157
157
std::vector<double > pathDistances ( numPoints );
@@ -182,15 +182,15 @@ std::unique_ptr< QgsTextRendererUtils::CurvePlacementProperties > QgsTextRendere
182
182
y[i] = prevY;
183
183
}
184
184
185
- return generateCurvedTextPlacementPrivate ( metrics, x.data (), y.data (), numPoints, pathDistances, offsetAlongLine, direction, maxConcaveAngle, maxConvexAngle, uprightOnly, false , true );
185
+ return generateCurvedTextPlacementPrivate ( metrics, x.data (), y.data (), numPoints, pathDistances, offsetAlongLine, direction, flags, maxConcaveAngle, maxConvexAngle, false );
186
186
}
187
187
188
- std::unique_ptr< QgsTextRendererUtils::CurvePlacementProperties > QgsTextRendererUtils::generateCurvedTextPlacement ( const QgsPrecalculatedTextMetrics &metrics, const double *x, const double *y, int numPoints, const std::vector<double > &pathDistances, double offsetAlongLine, LabelLineDirection direction, double maxConcaveAngle, double maxConvexAngle, bool uprightOnly )
188
+ std::unique_ptr< QgsTextRendererUtils::CurvePlacementProperties > QgsTextRendererUtils::generateCurvedTextPlacement ( const QgsPrecalculatedTextMetrics &metrics, const double *x, const double *y, int numPoints, const std::vector<double > &pathDistances, double offsetAlongLine, LabelLineDirection direction, double maxConcaveAngle, double maxConvexAngle, bool uprightOnly, CurvedTextFlags flags )
189
189
{
190
- return generateCurvedTextPlacementPrivate ( metrics, x, y, numPoints, pathDistances, offsetAlongLine, direction, maxConcaveAngle, maxConvexAngle, uprightOnly );
190
+ return generateCurvedTextPlacementPrivate ( metrics, x, y, numPoints, pathDistances, offsetAlongLine, direction, flags, maxConcaveAngle, maxConvexAngle, uprightOnly );
191
191
}
192
192
193
- std::unique_ptr< QgsTextRendererUtils::CurvePlacementProperties > QgsTextRendererUtils::generateCurvedTextPlacementPrivate ( const QgsPrecalculatedTextMetrics &metrics, const double *x, const double *y, int numPoints, const std::vector<double > &pathDistances, double offsetAlongLine, LabelLineDirection direction, double maxConcaveAngle, double maxConvexAngle, bool uprightOnly, bool isSecondAttempt, bool calculateBaselinePlacement )
193
+ std::unique_ptr< QgsTextRendererUtils::CurvePlacementProperties > QgsTextRendererUtils::generateCurvedTextPlacementPrivate ( const QgsPrecalculatedTextMetrics &metrics, const double *x, const double *y, int numPoints, const std::vector<double > &pathDistances, double offsetAlongLine, LabelLineDirection direction, CurvedTextFlags flags, double maxConcaveAngle, double maxConvexAngle, bool isSecondAttempt )
194
194
{
195
195
std::unique_ptr< CurvePlacementProperties > output = std::make_unique< CurvePlacementProperties >();
196
196
output->graphemePlacement .reserve ( metrics.count () );
@@ -314,7 +314,7 @@ std::unique_ptr< QgsTextRendererUtils::CurvePlacementProperties > QgsTextRendere
314
314
}
315
315
}
316
316
317
- if ( !calculateBaselinePlacement )
317
+ if ( !( flags & CurvedTextFlag::UseBaselinePlacement ) )
318
318
{
319
319
// Shift the character downwards since the draw position is specified at the baseline
320
320
// and we're calculating the mean line here
@@ -354,11 +354,11 @@ std::unique_ptr< QgsTextRendererUtils::CurvePlacementProperties > QgsTextRendere
354
354
output->upsideDownCharCount ++;
355
355
}
356
356
357
- if ( !isSecondAttempt && uprightOnly && output->upsideDownCharCount >= characterCount / 2.0 )
357
+ if ( !isSecondAttempt && ( flags & QgsTextRendererUtils::CurvedTextFlag::UprightCharactersOnly ) && output->upsideDownCharCount >= characterCount / 2.0 )
358
358
{
359
359
// more of text is upside down then right side up...
360
360
// if text should be shown upright then retry with the opposite orientation
361
- return generateCurvedTextPlacementPrivate ( metrics, x, y, numPoints, pathDistances, offsetAlongLine, direction, maxConcaveAngle, maxConvexAngle, uprightOnly , true );
361
+ return generateCurvedTextPlacementPrivate ( metrics, x, y, numPoints, pathDistances, offsetAlongLine, direction, flags, maxConcaveAngle, maxConvexAngle , true );
362
362
}
363
363
364
364
return output;
0 commit comments