Quantum GIS API Documentation
1.8
|
00001 /*************************************************************************** 00002 qgsdiagram.h 00003 --------------------- 00004 begin : March 2011 00005 copyright : (C) 2011 by Marco Hugentobler 00006 email : marco dot hugentobler at sourcepole dot ch 00007 *************************************************************************** 00008 * * 00009 * This program is free software; you can redistribute it and/or modify * 00010 * it under the terms of the GNU General Public License as published by * 00011 * the Free Software Foundation; either version 2 of the License, or * 00012 * (at your option) any later version. * 00013 * * 00014 ***************************************************************************/ 00015 #ifndef QGSDIAGRAM_H 00016 #define QGSDIAGRAM_H 00017 00018 #include "qgsfeature.h" 00019 #include <QPen> 00020 #include <QBrush> 00021 00022 class QPainter; 00023 class QPointF; 00024 struct QgsDiagramSettings; 00025 00026 class QgsRenderContext; 00027 00029 class CORE_EXPORT QgsDiagram 00030 { 00031 public: 00032 virtual ~QgsDiagram() {} 00034 virtual void renderDiagram( const QgsAttributeMap& att, QgsRenderContext& c, const QgsDiagramSettings& s, const QPointF& position ) = 0; 00035 virtual QString diagramName() const = 0; 00036 00037 protected: 00038 void setPenWidth( QPen& pen, const QgsDiagramSettings& s, const QgsRenderContext& c ); 00039 QSizeF sizePainterUnits( const QSizeF& size, const QgsDiagramSettings& s, const QgsRenderContext& c ); 00040 QFont scaledFont( const QgsDiagramSettings& s, const QgsRenderContext& c ); 00041 }; 00042 00043 class CORE_EXPORT QgsTextDiagram: public QgsDiagram 00044 { 00045 public: 00046 enum Shape 00047 { 00048 Circle = 0, 00049 Rectangle, 00050 Triangle 00051 }; 00052 00053 enum Orientation 00054 { 00055 Horizontal = 0, 00056 Vertical 00057 }; 00058 00059 QgsTextDiagram(); 00060 ~QgsTextDiagram(); 00061 void renderDiagram( const QgsAttributeMap& att, QgsRenderContext& c, const QgsDiagramSettings& s, const QPointF& position ); 00062 00063 QString diagramName() const { return "Text"; } 00064 00065 private: 00066 Orientation mOrientation; 00067 Shape mShape; 00068 QBrush mBrush; //transparent brush 00069 QPen mPen; 00070 00073 void lineEllipseIntersection( const QPointF& lineStart, const QPointF& lineEnd, const QPointF& ellipseMid, double r1, double r2, QList<QPointF>& result ) const; 00074 }; 00075 00076 class CORE_EXPORT QgsPieDiagram: public QgsDiagram 00077 { 00078 public: 00079 QgsPieDiagram(); 00080 ~QgsPieDiagram(); 00081 00082 void renderDiagram( const QgsAttributeMap& att, QgsRenderContext& c, const QgsDiagramSettings& s, const QPointF& position ); 00083 QString diagramName() const { return "Pie"; } 00084 00085 private: 00086 QBrush mCategoryBrush; 00087 QPen mPen; 00088 }; 00089 00090 #endif // QGSDIAGRAM_H