Quantum GIS API Documentation
1.7.4
|
00001 #ifndef QGSDIAGRAM_H 00002 #define QGSDIAGRAM_H 00003 00004 #include "qgsfeature.h" 00005 #include <QPen> 00006 #include <QBrush> 00007 00008 class QPainter; 00009 class QPointF; 00010 struct QgsDiagramSettings; 00011 00012 class QgsRenderContext; 00013 00015 class CORE_EXPORT QgsDiagram 00016 { 00017 public: 00019 virtual void renderDiagram( const QgsAttributeMap& att, QgsRenderContext& c, const QgsDiagramSettings& s, const QPointF& position ) = 0; 00020 virtual QString diagramName() const = 0; 00021 00022 protected: 00023 void setPenWidth( QPen& pen, const QgsDiagramSettings& s, const QgsRenderContext& c ); 00024 QSizeF sizePainterUnits( const QSizeF& size, const QgsDiagramSettings& s, const QgsRenderContext& c ); 00025 QFont scaledFont( const QgsDiagramSettings& s, const QgsRenderContext& c ); 00026 }; 00027 00028 class CORE_EXPORT QgsTextDiagram: public QgsDiagram 00029 { 00030 public: 00031 enum Shape 00032 { 00033 Circle = 0, 00034 Rectangle, 00035 Triangle 00036 }; 00037 00038 enum Orientation 00039 { 00040 Horizontal = 0, 00041 Vertical 00042 }; 00043 00044 QgsTextDiagram(); 00045 ~QgsTextDiagram(); 00046 void renderDiagram( const QgsAttributeMap& att, QgsRenderContext& c, const QgsDiagramSettings& s, const QPointF& position ); 00047 00048 QString diagramName() const { return "Text"; } 00049 00050 private: 00051 Orientation mOrientation; 00052 Shape mShape; 00053 QBrush mBrush; //transparent brush 00054 QPen mPen; 00055 00058 void lineEllipseIntersection( const QPointF& lineStart, const QPointF& lineEnd, const QPointF& ellipseMid, double r1, double r2, QList<QPointF>& result ) const; 00059 }; 00060 00061 class CORE_EXPORT QgsPieDiagram: public QgsDiagram 00062 { 00063 public: 00064 QgsPieDiagram(); 00065 ~QgsPieDiagram(); 00066 00067 void renderDiagram( const QgsAttributeMap& att, QgsRenderContext& c, const QgsDiagramSettings& s, const QPointF& position ); 00068 QString diagramName() const { return "Pie"; } 00069 00070 private: 00071 QBrush mCategoryBrush; 00072 QPen mPen; 00073 }; 00074 00075 #endif // QGSDIAGRAM_H