#ifndef PIE_ROUND_H #define PIE_ROUND_H #include #include "DataPoint.h" class PieChartScene; class PieRound: public QGraphicsItem { public: static const int Margin = 20; static const int Radius = 80; static const int LabelRadius = 50; public: PieRound(const QPointF& center, const PieChartScene* scene); QRectF boundingRect() const; void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget* = 0) {} private: void calculateSum(); void addSectors(); void addSector(int index, qreal startAngle, qreal sweep); QPainterPath createSectorPath(qreal startAngle, qreal sweep); void addSectorItem(const QPainterPath& path, QColor color); void addSectorLabel(int index, qreal startAngle, qreal sweep); QPointF getLabelPos(qreal startAngle, qreal sweep, QGraphicsSimpleTextItem* labelItem); private: int sum; const PieChartScene* scene; }; #endif