##// END OF EJS Templates
Adaptive layout to legend. Tries to fit all items inside given maximum size
Adaptive layout to legend. Tries to fit all items inside given maximum size

File last commit:

r621:f4b980d7defa
r626:b05202e4f2ef
Show More
piechartitem_p.h
56 lines | 1.5 KiB | text/x-c | CLexer
#ifndef PIECHARTITEM_H
#define PIECHARTITEM_H
#include "qpieseries.h"
#include "chartitem_p.h"
#include "pieslice_p.h"
class QGraphicsItem;
QTCOMMERCIALCHART_BEGIN_NAMESPACE
class QPieSlice;
class PieChartItem : public QObject, public ChartItem
{
Q_OBJECT
public:
// TODO: use a generic data class instead of x and y
PieChartItem(QGraphicsItem *parent, QPieSeries *series);
~PieChartItem();
public: // from QGraphicsItem
QRectF boundingRect() const { return m_rect; }
void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget *);
public Q_SLOTS:
void initialize();
void handleSlicesAdded(QList<QPieSlice*> slices);
void handleSlicesRemoved(QList<QPieSlice*> slices);
void handlePieLayoutChanged();
void handleSliceChanged();
void handleDomainChanged(qreal, qreal, qreal, qreal);
void handleGeometryChanged(const QRectF& rect);
public:
void calculatePieLayout();
PieSliceLayout calculateSliceLayout(QPieSlice *slice);
QVector<PieSliceLayout> calculateLayout();
void applyLayout(QVector<PieSliceLayout> &layout);
void updateLayout(PieSliceLayout &layout);
void setLayout(QVector<PieSliceLayout> &layout);
void setLayout(PieSliceLayout &layout);
void destroySlice(QPieSlice *slice);
private:
friend class PieSlice;
QHash<QPieSlice*, PieSlice*> m_slices;
QPieSeries *m_series;
QRectF m_rect;
QPointF m_pieCenter;
qreal m_pieRadius;
QRectF m_debugRect;
};
QTCOMMERCIALCHART_END_NAMESPACE
#endif // PIECHARTITEM_H