summaryrefslogtreecommitdiffstats
path: root/profile-widget/divecartesianaxis.h
diff options
context:
space:
mode:
Diffstat (limited to 'profile-widget/divecartesianaxis.h')
-rw-r--r--profile-widget/divecartesianaxis.h122
1 files changed, 122 insertions, 0 deletions
diff --git a/profile-widget/divecartesianaxis.h b/profile-widget/divecartesianaxis.h
new file mode 100644
index 000000000..cc7d0bcf7
--- /dev/null
+++ b/profile-widget/divecartesianaxis.h
@@ -0,0 +1,122 @@
+#ifndef DIVECARTESIANAXIS_H
+#define DIVECARTESIANAXIS_H
+
+#include <QObject>
+#include <QGraphicsLineItem>
+#include "subsurface-core/color.h"
+
+class QPropertyAnimation;
+class DiveTextItem;
+class DiveLineItem;
+class DivePlotDataModel;
+
+class DiveCartesianAxis : public QObject, public QGraphicsLineItem {
+ Q_OBJECT
+ Q_PROPERTY(QLineF line WRITE setLine READ line)
+ Q_PROPERTY(QPointF pos WRITE setPos READ pos)
+ Q_PROPERTY(qreal x WRITE setX READ x)
+ Q_PROPERTY(qreal y WRITE setY READ y)
+private:
+ bool printMode;
+ QPen gridPen();
+public:
+ enum Orientation {
+ TopToBottom,
+ BottomToTop,
+ LeftToRight,
+ RightToLeft
+ };
+ DiveCartesianAxis();
+ virtual ~DiveCartesianAxis();
+ void setPrintMode(bool mode);
+ void setMinimum(double minimum);
+ void setMaximum(double maximum);
+ void setTickInterval(double interval);
+ void setOrientation(Orientation orientation);
+ void setTickSize(qreal size);
+ void setFontLabelScale(qreal scale);
+ double minimum() const;
+ double maximum() const;
+ double tickInterval() const;
+ double tickSize() const;
+ double fontLabelScale() const;
+ qreal valueAt(const QPointF &p) const;
+ qreal percentAt(const QPointF &p);
+ qreal posAtValue(qreal value);
+ void setColor(const QColor &color);
+ void setTextColor(const QColor &color);
+ void animateChangeLine(const QLineF &newLine);
+ void setTextVisible(bool arg1);
+ void setLinesVisible(bool arg1);
+ void setLineSize(qreal lineSize);
+ void setLine(const QLineF& line);
+ int unitSystem;
+public
+slots:
+ virtual void updateTicks(color_indice_t color = TIME_GRID);
+
+signals:
+ void sizeChanged();
+ void maxChanged();
+
+protected:
+ virtual QString textForValue(double value);
+ virtual QColor colorForValue(double value);
+ Orientation orientation;
+ QList<DiveTextItem *> labels;
+ QList<DiveLineItem *> lines;
+ double min;
+ double max;
+ double interval;
+ double tick_size;
+ QColor textColor;
+ bool textVisibility;
+ bool lineVisibility;
+ double labelScale;
+ qreal line_size;
+ bool changed;
+};
+
+class DepthAxis : public DiveCartesianAxis {
+ Q_OBJECT
+public:
+ DepthAxis();
+
+protected:
+ QString textForValue(double value);
+ QColor colorForValue(double value);
+private
+slots:
+ void settingsChanged();
+};
+
+class TimeAxis : public DiveCartesianAxis {
+ Q_OBJECT
+public:
+ virtual void updateTicks();
+
+protected:
+ QString textForValue(double value);
+ QColor colorForValue(double value);
+};
+
+class TemperatureAxis : public DiveCartesianAxis {
+ Q_OBJECT
+protected:
+ QString textForValue(double value);
+};
+
+class PartialGasPressureAxis : public DiveCartesianAxis {
+ Q_OBJECT
+public:
+ PartialGasPressureAxis();
+ void setModel(DivePlotDataModel *model);
+public
+slots:
+ void settingsChanged();
+
+private:
+ DivePlotDataModel *model;
+};
+
+#endif // DIVECARTESIANAXIS_H