Branch data Line data Source code
1 : : /***************************************************************************
2 : : qgslabelposition.h
3 : : -------------------
4 : : begin : February 2021
5 : : copyright : (C) 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 QGSLABELPOSITION_H
17 : : #define QGSLABELPOSITION_H
18 : :
19 : : #include "qgis_core.h"
20 : : #include "qgis_sip.h"
21 : :
22 : : #include "qgspointxy.h"
23 : : #include "qgsrectangle.h"
24 : : #include "qgsgeometry.h"
25 : :
26 : : #include <QFont>
27 : :
28 : : /**
29 : : * \ingroup core
30 : : * \class QgsLabelPosition
31 : : * \brief Represents the calculated placement of a map label.
32 : : */
33 : 0 : class CORE_EXPORT QgsLabelPosition
34 : : {
35 : : public:
36 : :
37 : : /**
38 : : * Constructor for QgsLabelPosition.
39 : : * \param id associated feature ID
40 : : * \param r label rotation in degrees clockwise
41 : : * \param corners corner points of label bounding box, in map units
42 : : * \param rect label bounding box, in map units
43 : : * \param w width of label, in map units
44 : : * \param h height of label, in map units
45 : : * \param layer ID of associated map layer
46 : : * \param labeltext text rendered for label
47 : : * \param labelfont font used to render label
48 : : * \param upside_down TRUE if label is upside down
49 : : * \param diagram TRUE if label is a diagram
50 : : * \param pinned TRUE if label has pinned placement
51 : : * \param providerId ID of associated label provider
52 : : * \param labelGeometry polygon geometry of label boundary
53 : : * \param isUnplaced set to TRUE if label was unplaced (e.g. due to collisions with other labels)
54 : : */
55 : 0 : QgsLabelPosition( QgsFeatureId id, double r, const QVector< QgsPointXY > &corners, const QgsRectangle &rect, double w, double h, const QString &layer, const QString &labeltext, const QFont &labelfont, bool upside_down, bool diagram = false, bool pinned = false, const QString &providerId = QString(),
56 : : const QgsGeometry &labelGeometry = QgsGeometry(), bool isUnplaced = false )
57 : 0 : : featureId( id )
58 : 0 : , rotation( r )
59 : 0 : , cornerPoints( corners )
60 : 0 : , labelRect( rect )
61 : 0 : , labelGeometry( labelGeometry )
62 : 0 : , width( w )
63 : 0 : , height( h )
64 : 0 : , layerID( layer )
65 : 0 : , labelText( labeltext )
66 : 0 : , labelFont( labelfont )
67 : 0 : , upsideDown( upside_down )
68 : 0 : , isDiagram( diagram )
69 : 0 : , isPinned( pinned )
70 : 0 : , providerID( providerId )
71 : 0 : , isUnplaced( isUnplaced )
72 : 0 : {}
73 : :
74 : : //! Constructor for QgsLabelPosition
75 : : QgsLabelPosition() = default;
76 : :
77 : : /**
78 : : * ID of feature associated with this label.
79 : : */
80 : : QgsFeatureId featureId = FID_NULL;
81 : :
82 : : /**
83 : : * Rotation of label, in degrees clockwise.
84 : : */
85 : : double rotation = 0;
86 : :
87 : : QVector< QgsPointXY > cornerPoints;
88 : : QgsRectangle labelRect;
89 : :
90 : : /**
91 : : * A polygon geometry representing the label's bounds in map coordinates.
92 : : * \since QGIS 3.4.9
93 : : */
94 : : QgsGeometry labelGeometry;
95 : :
96 : : /**
97 : : * Width of label bounding box, in map units.
98 : : */
99 : : double width = 0;
100 : :
101 : : /**
102 : : * Heeght of label bounding box, in map units.
103 : : */
104 : : double height = 0;
105 : :
106 : : /**
107 : : * ID of associated map layer.
108 : : */
109 : : QString layerID;
110 : :
111 : : /**
112 : : * String shown in label.
113 : : */
114 : : QString labelText;
115 : :
116 : : /**
117 : : * Font which the label is rendered using.
118 : : */
119 : : QFont labelFont;
120 : :
121 : : /**
122 : : * TRUE if label is upside down.
123 : : */
124 : : bool upsideDown = false;
125 : :
126 : : /**
127 : : * TRUE if label is a diagram.
128 : : */
129 : : bool isDiagram = false;
130 : :
131 : : /**
132 : : * TRUE if label position has been pinned.
133 : : */
134 : : bool isPinned = false;
135 : :
136 : : /**
137 : : * ID of the associated label provider.
138 : : * \since QGIS 2.14
139 : : */
140 : : QString providerID;
141 : :
142 : : /**
143 : : * TRUE if label position corresponds to an unplaced label.
144 : : * \since QGIS 3.10
145 : : */
146 : : bool isUnplaced = false;
147 : : };
148 : :
149 : : #endif // QGSLABELPOSITION_H
|