QGIS API Documentation  3.18.1-Zürich (202f1bf7e5)
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 
68  QgsLabeling::LinePlacementFlags placementFlags() const { return mPlacementFlags; }
69 
76  void setPlacementFlags( QgsLabeling::LinePlacementFlags flags ) { mPlacementFlags = flags; }
77 
84  bool mergeLines() const { return mMergeLines; }
85 
92  void setMergeLines( bool merge ) { mMergeLines = merge; }
93 
98  void updateDataDefinedProperties( const QgsPropertyCollection &properties, QgsExpressionContext &context );
99 
111  bool addDirectionSymbol() const { return mAddDirectionSymbol; }
112 
124  void setAddDirectionSymbol( bool enabled ) { mAddDirectionSymbol = enabled; }
125 
133  QString leftDirectionSymbol() const { return mLeftDirectionSymbol; }
134 
142  void setLeftDirectionSymbol( const QString &symbol ) { mLeftDirectionSymbol = symbol; }
143 
151  QString rightDirectionSymbol() const { return mRightDirectionSymbol; }
152 
160  void setRightDirectionSymbol( const QString &symbol ) { mRightDirectionSymbol = symbol; }
161 
167  bool reverseDirectionSymbol() const { return mReverseDirectionSymbol; }
168 
174  void setReverseDirectionSymbol( bool reversed ) { mReverseDirectionSymbol = reversed; }
175 
184  DirectionSymbolPlacement directionSymbolPlacement() const { return mPlaceDirectionSymbol; }
185 
194  void setDirectionSymbolPlacement( DirectionSymbolPlacement placement ) { mPlaceDirectionSymbol = placement; }
195 
202  double overrunDistance() const { return mOverrunDistance; }
203 
210  void setOverrunDistance( double distance ) { mOverrunDistance = distance; }
211 
218  QgsUnitTypes::RenderUnit overrunDistanceUnit() const {return mOverrunDistanceUnit; }
219 
226  void setOverrunDistanceUnit( const QgsUnitTypes::RenderUnit &unit ) { mOverrunDistanceUnit = unit;}
227 
234  QgsMapUnitScale overrunDistanceMapUnitScale() const { return mOverrunDistanceMapUnitScale; }
235 
242  void setOverrunDistanceMapUnitScale( const QgsMapUnitScale &scale ) { mOverrunDistanceMapUnitScale = scale; }
243 
255  double lineAnchorPercent() const { return mLineAnchorPercent; }
256 
268  void setLineAnchorPercent( double percent ) { mLineAnchorPercent = percent; }
269 
277  AnchorType anchorType() const { return mAnchorType; }
278 
286  void setAnchorType( AnchorType type ) { mAnchorType = type; }
287 
288  private:
289  QgsLabeling::LinePlacementFlags mPlacementFlags = QgsLabeling::LinePlacementFlag::AboveLine | QgsLabeling::LinePlacementFlag::MapOrientation;
290  bool mMergeLines = false;
291  bool mAddDirectionSymbol = false;
292  QString mLeftDirectionSymbol = QString( '<' );
293  QString mRightDirectionSymbol = QString( '>' );
294  bool mReverseDirectionSymbol = false;
295  DirectionSymbolPlacement mPlaceDirectionSymbol = DirectionSymbolPlacement::SymbolLeftRight;
296  double mOverrunDistance = 0;
298  QgsMapUnitScale mOverrunDistanceMapUnitScale;
299 
300  double mLineAnchorPercent = 0.5;
301  AnchorType mAnchorType = AnchorType::HintOnly;
302 };
303 
304 #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.
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 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.
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:167
@ RenderMillimeters
Millimeters.
Definition: qgsunittypes.h:168