diff options
Diffstat (limited to 'src/charts/ChartAxes.h')
-rw-r--r-- | src/charts/ChartAxes.h | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/src/charts/ChartAxes.h b/src/charts/ChartAxes.h new file mode 100644 index 0000000..ebfe4ac --- /dev/null +++ b/src/charts/ChartAxes.h @@ -0,0 +1,51 @@ +#ifndef CHART_AXES_H +#define CHART_AXES_H + +#include <QtCore> +#include <QtWidgets> + +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 |