QGIS API Documentation  2.5.0-Master
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
qgslabel.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgslabel.h - render vector labels
3  -------------------
4  begin : August 2004
5  copyright : (C) 2004 by Radim Blazek
6  email : blazek@itc.it
7  ***************************************************************************/
8 /***************************************************************************
9  * *
10  * This program is free software; you can redistribute it and/or modify *
11  * it under the terms of the GNU General Public License as published by *
12  * the Free Software Foundation; either version 2 of the License, or *
13  * (at your option) any later version. *
14  * *
15  ***************************************************************************/
16 #ifndef QGSLABEL_H
17 #define QGSLABEL_H
18 
19 #include <vector>
20 
21 #include <QColor>
22 #include <QList>
23 #include <QMap>
24 
25 #include "qgspoint.h"
26 
27 class QDomNode;
28 class QDomDocument;
29 class QDomElement;
30 class QString;
31 class QPainter;
32 class QPaintDevice;
33 
34 class QgsFeature;
35 class QgsField;
37 
38 #include "qgsfield.h"
39 #include "qgsrectangle.h"
40 #include "qgsrendercontext.h"
41 
42 typedef QList<int> QgsAttributeList;
43 
44 class QgsFields;
45 
51 class CORE_EXPORT QgsLabel
52 {
53  public:
54  QgsLabel( const QgsFields & fields );
55 
56  ~QgsLabel();
57 
58  /* Fields */
60  {
61  Text = 0,
83  StrikeOut, // added in 1.5
84  LabelFieldCount
85  };
86 
87  struct labelpoint
88  {
90  double angle;
91  };
92 
100  void renderLabel( QgsRenderContext &renderContext, QgsFeature &feature, bool selected, QgsLabelAttributes *classAttributes = 0 );
101 
105  void readXML( const QDomNode& node );
106 
108  void writeXML( QDomNode & label_node, QDomDocument & document ) const;
109 
111  void addRequiredFields( QgsAttributeList& fields ) const;
112 
114  void setFields( const QgsFields & fields );
115 
117  QgsFields & fields();
118 
123  QgsLabelAttributes *labelAttributes();
124 
126  void setLabelField( int attr, int fieldIndex );
127 
129  QString labelField( int attr ) const;
130 
136  QString fieldValue( int attr, QgsFeature& feature );
137 
139  void setMinScale( float theMinScale );
140  float minScale() const;
141 
143  void setMaxScale( float theMaxScale );
144  float maxScale() const;
145 
147  void setScaleBasedVisibility( bool theVisibilityFlag );
148  bool scaleBasedVisibility() const;
149 
150  private:
154  void renderLabel( QgsRenderContext &renderContext, QgsPoint point,
155  QString text, QFont font, QPen pen,
156  int dx, int dy,
157  double xoffset, double yoffset,
158  double ang,
159  int width, int height, int alignment );
160 
161  bool readLabelField( QDomElement &el, int attr, QString prefix );
162 
164  void labelPoint( std::vector<labelpoint>&, QgsFeature &feature );
165 
167  const unsigned char* labelPoint( labelpoint& point, const unsigned char* wkb, size_t wkblen );
168 
170  QColor mSelectionColor;
171 
173  QgsLabelAttributes *mLabelAttributes;
174 
176  QgsFields mFields;
177 
179  std::vector<QString> mLabelField;
180 
182  std::vector<int> mLabelFieldIdx;
183 
185  float mMinScale;
187  float mMaxScale;
189  bool mScaleBasedVisibility;
190 };
191 
192 #endif
Definition: qgslabel.h:67
Definition: qgslabel.h:80
QgsPoint p
Definition: qgslabel.h:89
Definition: qgslabel.h:65
Definition: qgslabel.h:76
Definition: qgslabel.h:77
Definition: qgslabel.h:70
Container of fields for a vector layer.
Definition: qgsfield.h:172
Definition: qgslabel.h:73
The feature class encapsulates a single feature including its id, geometry and a list of field/values...
Definition: qgsfeature.h:113
Definition: qgslabel.h:63
Definition: qgslabel.h:72
Definition: qgslabel.h:74
QList< int > QgsAttributeList
Definition: qgslabel.h:36
Definition: qgslabel.h:79
QList< int > QgsAttributeList
Definition: qgsfeaturerequest.h:26
double angle
Definition: qgslabel.h:90
Definition: qgslabel.h:68
Definition: qgslabel.h:64
Encapsulate a field in an attribute table or data source.
Definition: qgsfield.h:33
Definition: qgslabel.h:75
A class to represent a point geometry.
Definition: qgspoint.h:63
A class to render labels.
Definition: qgslabel.h:51
Definition: qgslabel.h:87
Contains information about the context of a rendering operation.
Definition: qgsrendercontext.h:39
Definition: qgslabel.h:83
Definition: qgslabel.h:62
Definition: qgslabel.h:81
A class to store attributes needed for label rendering.
Definition: qgslabelattributes.h:76
Definition: qgslabel.h:66
Definition: qgslabel.h:71
Definition: qgslabel.h:82
Definition: qgslabel.h:78
Definition: qgslabel.h:69
LabelField
Definition: qgslabel.h:59