axisitem_p.h
93 lines
| 2.3 KiB
| text/x-c
|
CLexer
Michal Klocek
|
r67 | #ifndef AXISITEM_H_ | ||
#define AXISITEM_H_ | ||||
Michal Klocek
|
r140 | #include "domain_p.h" | ||
Tero Ahola
|
r104 | #include "chartitem_p.h" | ||
Michal Klocek
|
r67 | #include <QGraphicsItem> | ||
QTCOMMERCIALCHART_BEGIN_NAMESPACE | ||||
Michal Klocek
|
r140 | class QChartAxis; | ||
class AxisItem : public QObject, public ChartItem | ||||
Michal Klocek
|
r67 | { | ||
Michal Klocek
|
r140 | Q_OBJECT | ||
Michal Klocek
|
r67 | public: | ||
enum AxisType{X_AXIS,Y_AXIS}; | ||||
Michal Klocek
|
r439 | AxisItem(QChartAxis* axis,AxisType type = X_AXIS,QGraphicsItem* parent = 0); | ||
Michal Klocek
|
r67 | ~AxisItem(); | ||
//from QGraphicsItem | ||||
QRectF boundingRect() const; | ||||
Michal Klocek
|
r176 | void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); | ||
Michal Klocek
|
r67 | |||
Michal Klocek
|
r176 | AxisType axisType() const {return m_type;}; | ||
Michal Klocek
|
r140 | |||
Michal Klocek
|
r184 | void setAxisOpacity(qreal opacity); | ||
qreal axisOpacity() const; | ||||
Michal Klocek
|
r176 | void setGridOpacity(qreal opacity); | ||
qreal gridOpacity() const; | ||||
Michal Klocek
|
r140 | |||
Michal Klocek
|
r176 | void setLabelsOpacity(qreal opacity); | ||
qreal labelsOpacity() const; | ||||
Michal Klocek
|
r140 | |||
Michal Klocek
|
r176 | void setShadesOpacity(qreal opacity); | ||
qreal shadesOpacity() const; | ||||
Michal Klocek
|
r67 | |||
Michal Klocek
|
r176 | void setLabelsAngle(int angle); | ||
int labelsAngle()const { return m_labelsAngle; } | ||||
void setShadesBrush(const QBrush& brush); | ||||
void setShadesPen(const QPen& pen); | ||||
Michal Klocek
|
r140 | |||
Michal Klocek
|
r184 | void setAxisPen(const QPen& pen); | ||
Michal Klocek
|
r176 | void setGridPen(const QPen& pen); | ||
void setLabelsPen(const QPen& pen); | ||||
void setLabelsBrush(const QBrush& brush); | ||||
void setLabelsFont(const QFont& font); | ||||
Michal Klocek
|
r513 | inline QRectF geometry() const { return m_rect; } | ||
inline qreal zoomFactor() const { return m_zoomFactor;} | ||||
Michal Klocek
|
r504 | |||
Michal Klocek
|
r176 | public slots: | ||
Michal Klocek
|
r502 | void handleAxisUpdated(); | ||
void handleAxisCategoriesUpdated(); | ||||
void handleRangeChanged(qreal min , qreal max); | ||||
void handleTicksCountChanged(int count); | ||||
void handleGeometryChanged(const QRectF& size); | ||||
Michal Klocek
|
r439 | |||
Michal Klocek
|
r291 | public: | ||
Michal Klocek
|
r502 | virtual void updateLayout(QVector<qreal>& layout); | ||
void setLayout(QVector<qreal>& layout); | ||||
Michal Klocek
|
r452 | QVector<qreal> layout() { return m_layoutVector;}; | ||
Michal Klocek
|
r393 | |||
Michal Klocek
|
r85 | private: | ||
Michal Klocek
|
r452 | inline bool isEmpty(); | ||
Michal Klocek
|
r223 | void createItems(int count); | ||
Michal Klocek
|
r502 | void deleteItems(int count); | ||
QVector<qreal> calculateLayout() const; | ||||
QStringList createLabels(int ticks, qreal min, qreal max) const; | ||||
Michal Klocek
|
r497 | |||
Michal Klocek
|
r67 | private: | ||
Michal Klocek
|
r439 | QChartAxis* m_chartAxis; | ||
Michal Klocek
|
r140 | AxisType m_type; | ||
QRectF m_rect; | ||||
Michal Klocek
|
r176 | int m_labelsAngle; | ||
QGraphicsItemGroup m_grid; | ||||
QGraphicsItemGroup m_shades; | ||||
QGraphicsItemGroup m_labels; | ||||
Michal Klocek
|
r272 | QGraphicsItemGroup m_axis; | ||
Michal Klocek
|
r291 | QVector<qreal> m_layoutVector; | ||
Michal Klocek
|
r452 | qreal m_min; | ||
qreal m_max; | ||||
Michal Klocek
|
r502 | int m_ticksCount; | ||
Michal Klocek
|
r513 | qreal m_zoomFactor; | ||
Michal Klocek
|
r140 | |||
Michal Klocek
|
r67 | }; | ||
QTCOMMERCIALCHART_END_NAMESPACE | ||||
#endif /* AXISITEM_H_ */ | ||||