#ifndef CHART_AXES_H #define CHART_AXES_H #include #include class ChartScene; class ChartAxes { public: ChartAxes(ChartScene* scene, int xTickInterval); void paint(); private: enum TickOrientation { XTick, YTick }; private: static QPointF getTickVector(TickOrientation orientation); static QPointF getLabelOffset(TickOrientation orientation); static qreal getLabelXAlignOffset(qreal labelWidth, TickOrientation orientation); private: void addAxisLines(); void addTicks(); void addXTicks(); void addYTicks(); void addLabel(const QString& labelText, const QPointF& pos, TickOrientation orientation); QPointF getTickOrigin(TickOrientation orientation) const; void addHRuler(const QPointF& pos); void addTick(const QPointF& pos, TickOrientation orientation); void addLabelledXTick(int index, QPointF& pos); void addLabelledYTick(int value, QPointF& pos, qreal posSpacing); private: static const int TickLength = 5; static const QPointF XLabelOffset; static const QPointF YLabelOffset; static const QFont TickLabelFont; private: ChartScene* scene; int xTickInterval; }; #endif