Quantum GIS API Documentation  1.7.4
src/core/qgsdiagram.h
Go to the documentation of this file.
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
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines