##// 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
pieslice_p.h
81 lines | 2.0 KiB | text/x-c | CLexer
#ifndef PIESLICE_H
#define PIESLICE_H
#include "qchartglobal.h"
#include "charttheme_p.h"
#include "qpieseries.h"
#include <QGraphicsItem>
#include <QRectF>
#include <QColor>
#include <QPen>
#define PIESLICE_LABEL_GAP 5
QTCOMMERCIALCHART_BEGIN_NAMESPACE
class PieChartItem;
class PieSliceLabel;
class QPieSlice;
class PieSliceLayout
{
public:
QPieSlice* m_data; // TODO: get rid of this
QPointF m_center;
qreal m_radius;
qreal m_startAngle;
qreal m_angleSpan;
};
class PieSlice : public QGraphicsObject
{
Q_OBJECT
public:
PieSlice(QGraphicsItem* parent = 0);
~PieSlice();
public: // from QGraphicsItem
QRectF boundingRect() const;
QPainterPath shape() const;
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
void hoverEnterEvent(QGraphicsSceneHoverEvent *event);
void hoverLeaveEvent(QGraphicsSceneHoverEvent *event);
void mousePressEvent(QGraphicsSceneMouseEvent *event);
Q_SIGNALS:
void clicked();
void hoverEnter();
void hoverLeave();
public:
void setLayout(PieSliceLayout layout);
void updateGeometry();
void updateData(const QPieSlice *sliceData);
static QPointF sliceCenter(QPointF point, qreal radius, QPieSlice *slice);
static QPainterPath slicePath(QPointF center, qreal radius, qreal startAngle, qreal angleSpan, qreal* centerAngle, QPointF* armStart);
static QPainterPath labelArmPath(QPointF start, qreal angle, qreal length, qreal textWidth, QPointF* textStart);
static QRectF labelTextRect(QFont font, QString text);
private:
PieSliceLayout m_layout;
QRectF m_boundingRect;
QPainterPath m_slicePath;
bool m_isExploded;
qreal m_explodeDistanceFactor;
bool m_labelVisible;
QPen m_slicePen;
QBrush m_sliceBrush;
QPainterPath m_labelArmPath;
qreal m_labelArmLengthFactor;
QPen m_labelArmPen;
QRectF m_labelTextRect;
QFont m_labelFont;
QString m_labelText;
};
QTCOMMERCIALCHART_END_NAMESPACE
#endif // PIESLICE_H