Quantum GIS API Documentation  1.7.5-Wroclaw
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
qgsdiagram.h
Go to the documentation of this file.
1 #ifndef QGSDIAGRAM_H
2 #define QGSDIAGRAM_H
3 
4 #include "qgsfeature.h"
5 #include <QPen>
6 #include <QBrush>
7 
8 class QPainter;
9 class QPointF;
10 struct QgsDiagramSettings;
11 
12 class QgsRenderContext;
13 
15 class CORE_EXPORT QgsDiagram
16 {
17  public:
19  virtual void renderDiagram( const QgsAttributeMap& att, QgsRenderContext& c, const QgsDiagramSettings& s, const QPointF& position ) = 0;
20  virtual QString diagramName() const = 0;
21 
22  protected:
23  void setPenWidth( QPen& pen, const QgsDiagramSettings& s, const QgsRenderContext& c );
24  QSizeF sizePainterUnits( const QSizeF& size, const QgsDiagramSettings& s, const QgsRenderContext& c );
25  QFont scaledFont( const QgsDiagramSettings& s, const QgsRenderContext& c );
26 };
27 
28 class CORE_EXPORT QgsTextDiagram: public QgsDiagram
29 {
30  public:
31  enum Shape
32  {
33  Circle = 0,
35  Triangle
36  };
37 
39  {
40  Horizontal = 0,
41  Vertical
42  };
43 
45  ~QgsTextDiagram();
46  void renderDiagram( const QgsAttributeMap& att, QgsRenderContext& c, const QgsDiagramSettings& s, const QPointF& position );
47 
48  QString diagramName() const { return "Text"; }
49 
50  private:
53  QBrush mBrush; //transparent brush
54  QPen mPen;
55 
58  void lineEllipseIntersection( const QPointF& lineStart, const QPointF& lineEnd, const QPointF& ellipseMid, double r1, double r2, QList<QPointF>& result ) const;
59 };
60 
61 class CORE_EXPORT QgsPieDiagram: public QgsDiagram
62 {
63  public:
64  QgsPieDiagram();
65  ~QgsPieDiagram();
66 
67  void renderDiagram( const QgsAttributeMap& att, QgsRenderContext& c, const QgsDiagramSettings& s, const QPointF& position );
68  QString diagramName() const { return "Pie"; }
69 
70  private:
72  QPen mPen;
73 };
74 
75 #endif // QGSDIAGRAM_H