QGIS API Documentation  3.24.2-Tisler (13c1a02865)
qgslabellinesettings.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgslabellinesettings.h
3  --------------------------
4  Date : August 2020
5  Copyright : (C) 2020 by Nyall Dawson
6  Email : nyall dot dawson at gmail dot com
7  ***************************************************************************
8  * *
9  * This program is free software; you can redistribute it and/or modify *
10  * it under the terms of the GNU General Public License as published by *
11  * the Free Software Foundation; either version 2 of the License, or *
12  * (at your option) any later version. *
13  * *
14  ***************************************************************************/
15 
16 #ifndef QGSLABELLINESETTINGS_H
17 #define QGSLABELLINESETTINGS_H
18 
19 #include "qgis_core.h"
20 #include "qgis_sip.h"
21 #include "qgslabeling.h"
22 #include "qgsunittypes.h"
23 #include "qgsmapunitscale.h"
24 #include <QString>
25 
28 
39 class CORE_EXPORT QgsLabelLineSettings
40 {
41  public:
42 
46  enum class DirectionSymbolPlacement : int
47  {
48  SymbolLeftRight,
49  SymbolAbove,
50  SymbolBelow
51  };
52 
56  enum class AnchorType : int
57  {
58  HintOnly,
59  Strict,
60  };
61 
67  enum class AnchorClipping : int
68  {
69  UseVisiblePartsOfLine,
70  UseEntireLine,
71  };
72 
79  QgsLabeling::LinePlacementFlags placementFlags() const { return mPlacementFlags; }
80 
87  void setPlacementFlags( QgsLabeling::LinePlacementFlags flags ) { mPlacementFlags = flags; }
88 
95  bool mergeLines() const { return mMergeLines; }
96 
103  void setMergeLines( bool merge ) { mMergeLines = merge; }
104 
109  void updateDataDefinedProperties( const QgsPropertyCollection &properties, QgsExpressionContext &context );
110 
122  bool addDirectionSymbol() const { return mAddDirectionSymbol; }
123 
135  void setAddDirectionSymbol( bool enabled ) { mAddDirectionSymbol = enabled; }
136 
144  QString leftDirectionSymbol() const { return mLeftDirectionSymbol; }
145 
153  void setLeftDirectionSymbol( const QString &symbol ) { mLeftDirectionSymbol = symbol; }
154 
162  QString rightDirectionSymbol() const { return mRightDirectionSymbol; }
163 
171  void setRightDirectionSymbol( const QString &symbol ) { mRightDirectionSymbol = symbol; }
172 
178  bool reverseDirectionSymbol() const { return mReverseDirectionSymbol; }
179 
185  void setReverseDirectionSymbol( bool reversed ) { mReverseDirectionSymbol = reversed; }
186 
195  DirectionSymbolPlacement directionSymbolPlacement() const { return mPlaceDirectionSymbol; }
196 
205  void setDirectionSymbolPlacement( DirectionSymbolPlacement placement ) { mPlaceDirectionSymbol = placement; }
206 
213  double overrunDistance() const { return mOverrunDistance; }
214 
221  void setOverrunDistance( double distance ) { mOverrunDistance = distance; }
222 
229  QgsUnitTypes::RenderUnit overrunDistanceUnit() const {return mOverrunDistanceUnit; }
230 
237  void setOverrunDistanceUnit( const QgsUnitTypes::RenderUnit &unit ) { mOverrunDistanceUnit = unit;}
238 
245  QgsMapUnitScale overrunDistanceMapUnitScale() const { return mOverrunDistanceMapUnitScale; }
246 
253  void setOverrunDistanceMapUnitScale( const QgsMapUnitScale &scale ) { mOverrunDistanceMapUnitScale = scale; }
254 
267  double lineAnchorPercent() const { return mLineAnchorPercent; }
268 
281  void setLineAnchorPercent( double percent ) { mLineAnchorPercent = percent; }
282 
291  AnchorType anchorType() const { return mAnchorType; }
292 
301  void setAnchorType( AnchorType type ) { mAnchorType = type; }
302 
313  AnchorClipping anchorClipping() const { return mAnchorClipping; }
314 
325  void setAnchorClipping( AnchorClipping clipping ) { mAnchorClipping = clipping; }
326 
327  private:
328  QgsLabeling::LinePlacementFlags mPlacementFlags = QgsLabeling::LinePlacementFlag::AboveLine | QgsLabeling::LinePlacementFlag::MapOrientation;
329  bool mMergeLines = false;
330  bool mAddDirectionSymbol = false;
331  QString mLeftDirectionSymbol = QString( '<' );
332  QString mRightDirectionSymbol = QString( '>' );
333  bool mReverseDirectionSymbol = false;
334  DirectionSymbolPlacement mPlaceDirectionSymbol = DirectionSymbolPlacement::SymbolLeftRight;
335  double mOverrunDistance = 0;
337  QgsMapUnitScale mOverrunDistanceMapUnitScale;
338 
339  double mLineAnchorPercent = 0.5;
340  AnchorType mAnchorType = AnchorType::HintOnly;
341  AnchorClipping mAnchorClipping = AnchorClipping::UseVisiblePartsOfLine;
342 };
343 
344 #endif // QGSLABELLINESETTINGS_H
Expression contexts are used to encapsulate the parameters around which a QgsExpression should be eva...
Contains settings related to how the label engine places and formats labels for line features (or pol...
AnchorType
Line anchor types.
void setPlacementFlags(QgsLabeling::LinePlacementFlags flags)
Returns the line placement flags, which dictate how line labels can be placed above or below the line...
QgsLabeling::LinePlacementFlags placementFlags() const
Returns the line placement flags, which dictate how line labels can be placed above or below the line...
bool reverseDirectionSymbol() const
Returns true if direction symbols should be reversed.
void setLineAnchorPercent(double percent)
Sets the percent along the line at which labels should be placed.
DirectionSymbolPlacement directionSymbolPlacement() const
Returns the placement for direction symbols.
AnchorClipping
Clipping behavior for line anchor calculation.
void setDirectionSymbolPlacement(DirectionSymbolPlacement placement)
Sets the placement for direction symbols.
AnchorType anchorType() const
Returns the line anchor type, which dictates how the lineAnchorPercent() setting is handled.
QString leftDirectionSymbol() const
Returns the string to use for left direction arrows.
void setLeftDirectionSymbol(const QString &symbol)
Sets the string to use for left direction arrows.
QgsMapUnitScale overrunDistanceMapUnitScale() const
Returns the map unit scale for label overrun distance.
double overrunDistance() const
Returns the distance which labels are allowed to overrun past the start or end of line features.
QgsUnitTypes::RenderUnit overrunDistanceUnit() const
Returns the units for label overrun distance.
void setMergeLines(bool merge)
Sets whether connected line features with identical label text should be merged prior to generating l...
DirectionSymbolPlacement
Placement options for direction symbols.
void setRightDirectionSymbol(const QString &symbol)
Sets the string to use for right direction arrows.
QString rightDirectionSymbol() const
Returns the string to use for right direction arrows.
void setAnchorClipping(AnchorClipping clipping)
Sets the line anchor clipping mode, which dictates how line strings are clipped before calculating th...
void setOverrunDistanceMapUnitScale(const QgsMapUnitScale &scale)
Sets the map unit scale for label overrun distance.
bool addDirectionSymbol() const
Returns true if '<' or '>' (or custom strings set via leftDirectionSymbol and rightDirectionSymbol) w...
double lineAnchorPercent() const
Returns the percent along the line at which labels should be placed.
bool mergeLines() const
Returns true if connected line features with identical label text should be merged prior to generatin...
void setAnchorType(AnchorType type)
Sets the line anchor type, which dictates how the lineAnchorPercent() setting is handled.
void setOverrunDistance(double distance)
Sets the distance which labels are allowed to overrun past the start or end of line features.
AnchorClipping anchorClipping() const
Returns the line anchor clipping mode, which dictates how line strings are clipped before calculating...
void setOverrunDistanceUnit(const QgsUnitTypes::RenderUnit &unit)
Sets the unit for label overrun distance.
void setReverseDirectionSymbol(bool reversed)
Sets whether the direction symbols should be reversed.
void setAddDirectionSymbol(bool enabled)
Sets whether '<' or '>' (or custom strings set via leftDirectionSymbol and rightDirectionSymbol) will...
Struct for storing maximum and minimum scales for measurements in map units.
A grouped map of multiple QgsProperty objects, each referenced by a integer key value.
RenderUnit
Rendering size units.
Definition: qgsunittypes.h:168
@ RenderMillimeters
Millimeters.
Definition: qgsunittypes.h:169