QGIS API Documentation  3.27.0-Master (e113457133)
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  Q_GADGET
42 
43  public:
44 
48  enum class DirectionSymbolPlacement : int
49  {
50  SymbolLeftRight,
51  SymbolAbove,
52  SymbolBelow
53  };
54  Q_ENUM( DirectionSymbolPlacement )
55 
56 
59  enum class AnchorType : int
60  {
61  HintOnly,
62  Strict,
63  };
64  Q_ENUM( AnchorType )
65 
66 
71  enum class AnchorClipping : int
72  {
73  UseVisiblePartsOfLine,
74  UseEntireLine,
75  };
76  Q_ENUM( AnchorClipping )
77 
78 
83  enum class AnchorTextPoint : int
84  {
85  StartOfText,
86  CenterOfText,
87  EndOfText,
88  FollowPlacement,
89  };
90  Q_ENUM( AnchorTextPoint )
91 
92 
98  QgsLabeling::LinePlacementFlags placementFlags() const { return mPlacementFlags; }
99 
106  void setPlacementFlags( QgsLabeling::LinePlacementFlags flags ) { mPlacementFlags = flags; }
107 
114  bool mergeLines() const { return mMergeLines; }
115 
122  void setMergeLines( bool merge ) { mMergeLines = merge; }
123 
128  void updateDataDefinedProperties( const QgsPropertyCollection &properties, QgsExpressionContext &context );
129 
141  bool addDirectionSymbol() const { return mAddDirectionSymbol; }
142 
154  void setAddDirectionSymbol( bool enabled ) { mAddDirectionSymbol = enabled; }
155 
163  QString leftDirectionSymbol() const { return mLeftDirectionSymbol; }
164 
172  void setLeftDirectionSymbol( const QString &symbol ) { mLeftDirectionSymbol = symbol; }
173 
181  QString rightDirectionSymbol() const { return mRightDirectionSymbol; }
182 
190  void setRightDirectionSymbol( const QString &symbol ) { mRightDirectionSymbol = symbol; }
191 
197  bool reverseDirectionSymbol() const { return mReverseDirectionSymbol; }
198 
204  void setReverseDirectionSymbol( bool reversed ) { mReverseDirectionSymbol = reversed; }
205 
214  DirectionSymbolPlacement directionSymbolPlacement() const { return mPlaceDirectionSymbol; }
215 
224  void setDirectionSymbolPlacement( DirectionSymbolPlacement placement ) { mPlaceDirectionSymbol = placement; }
225 
232  double overrunDistance() const { return mOverrunDistance; }
233 
240  void setOverrunDistance( double distance ) { mOverrunDistance = distance; }
241 
248  QgsUnitTypes::RenderUnit overrunDistanceUnit() const {return mOverrunDistanceUnit; }
249 
256  void setOverrunDistanceUnit( const QgsUnitTypes::RenderUnit &unit ) { mOverrunDistanceUnit = unit;}
257 
264  QgsMapUnitScale overrunDistanceMapUnitScale() const { return mOverrunDistanceMapUnitScale; }
265 
272  void setOverrunDistanceMapUnitScale( const QgsMapUnitScale &scale ) { mOverrunDistanceMapUnitScale = scale; }
273 
287  double lineAnchorPercent() const { return mLineAnchorPercent; }
288 
302  void setLineAnchorPercent( double percent ) { mLineAnchorPercent = percent; }
303 
312  AnchorType anchorType() const { return mAnchorType; }
313 
322  void setAnchorType( AnchorType type ) { mAnchorType = type; }
323 
334  AnchorClipping anchorClipping() const { return mAnchorClipping; }
335 
346  void setAnchorClipping( AnchorClipping clipping ) { mAnchorClipping = clipping; }
347 
356  AnchorTextPoint anchorTextPoint() const { return mAnchorTextPoint; }
357 
366  void setAnchorTextPoint( AnchorTextPoint point ) { mAnchorTextPoint = point; }
367 
368  private:
369  QgsLabeling::LinePlacementFlags mPlacementFlags = QgsLabeling::LinePlacementFlag::AboveLine | QgsLabeling::LinePlacementFlag::MapOrientation;
370  bool mMergeLines = false;
371  bool mAddDirectionSymbol = false;
372  QString mLeftDirectionSymbol = QString( '<' );
373  QString mRightDirectionSymbol = QString( '>' );
374  bool mReverseDirectionSymbol = false;
375  DirectionSymbolPlacement mPlaceDirectionSymbol = DirectionSymbolPlacement::SymbolLeftRight;
376  double mOverrunDistance = 0;
378  QgsMapUnitScale mOverrunDistanceMapUnitScale;
379 
380  double mLineAnchorPercent = 0.5;
381  AnchorType mAnchorType = AnchorType::HintOnly;
382  AnchorClipping mAnchorClipping = AnchorClipping::UseVisiblePartsOfLine;
383  AnchorTextPoint mAnchorTextPoint = AnchorTextPoint::FollowPlacement;
384 };
385 
386 #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...
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 setAnchorTextPoint(AnchorTextPoint point)
Sets the line anchor text point, which dictates which part of the label text should be placed at the ...
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.
AnchorTextPoint anchorTextPoint() const
Returns the line anchor text point, which dictates which part of the label text should be placed at t...
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.
AnchorTextPoint
Anchor point of label text.
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...
Contains constants and enums relating to labeling.
Definition: qgslabeling.h:32
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