QGIS API Documentation 3.29.0-Master (ade4f0cf0f)
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
39class 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