| 
									
										
										
										
											2017-04-27 20:26:36 +02:00
										 |  |  | // SPDX-License-Identifier: GPL-2.0
 | 
					
						
							| 
									
										
										
										
											2014-01-14 16:20:15 -02:00
										 |  |  | #ifndef DIVECARTESIANAXIS_H
 | 
					
						
							|  |  |  | #define DIVECARTESIANAXIS_H
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <QObject>
 | 
					
						
							|  |  |  | #include <QGraphicsLineItem>
 | 
					
						
							| 
									
										
										
										
											2016-04-04 22:02:03 -07:00
										 |  |  | #include "core/color.h"
 | 
					
						
							| 
									
										
										
										
											2015-11-06 13:54:35 +02:00
										 |  |  | #include "profilewidget2.h"
 | 
					
						
							| 
									
										
										
										
											2014-01-22 17:10:18 -02:00
										 |  |  | 
 | 
					
						
							|  |  |  | class QPropertyAnimation; | 
					
						
							| 
									
										
										
										
											2014-01-14 16:20:15 -02:00
										 |  |  | class DiveTextItem; | 
					
						
							|  |  |  | class DiveLineItem; | 
					
						
							| 
									
										
										
										
											2014-01-27 15:14:42 -02:00
										 |  |  | class DivePlotDataModel; | 
					
						
							| 
									
										
										
										
											2014-01-14 16:20:15 -02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-27 20:09:57 -08:00
										 |  |  | class DiveCartesianAxis : public QObject, public QGraphicsLineItem { | 
					
						
							| 
									
										
										
										
											2014-01-14 16:20:15 -02:00
										 |  |  | 	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) | 
					
						
							| 
									
										
										
										
											2015-10-11 14:21:14 +03:00
										 |  |  | private: | 
					
						
							|  |  |  | 	bool printMode; | 
					
						
							|  |  |  | 	QPen gridPen(); | 
					
						
							| 
									
										
										
										
											2014-01-14 16:20:15 -02:00
										 |  |  | public: | 
					
						
							| 
									
										
										
										
											2014-02-27 20:09:57 -08:00
										 |  |  | 	enum Orientation { | 
					
						
							|  |  |  | 		TopToBottom, | 
					
						
							|  |  |  | 		BottomToTop, | 
					
						
							|  |  |  | 		LeftToRight, | 
					
						
							|  |  |  | 		RightToLeft | 
					
						
							|  |  |  | 	}; | 
					
						
							| 
									
										
										
										
											2015-11-06 13:54:35 +02:00
										 |  |  | 	DiveCartesianAxis(ProfileWidget2 *widget); | 
					
						
							| 
									
										
										
										
											2018-07-31 07:41:19 +02:00
										 |  |  | 	~DiveCartesianAxis(); | 
					
						
							| 
									
										
										
										
											2015-10-11 14:21:14 +03:00
										 |  |  | 	void setPrintMode(bool mode); | 
					
						
							| 
									
										
										
										
											2014-01-14 16:20:15 -02:00
										 |  |  | 	void setMinimum(double minimum); | 
					
						
							|  |  |  | 	void setMaximum(double maximum); | 
					
						
							|  |  |  | 	void setTickInterval(double interval); | 
					
						
							| 
									
										
										
										
											2014-01-16 19:28:33 -02:00
										 |  |  | 	void setOrientation(Orientation orientation); | 
					
						
							| 
									
										
										
										
											2014-01-14 16:20:15 -02:00
										 |  |  | 	void setTickSize(qreal size); | 
					
						
							| 
									
										
										
										
											2014-02-15 11:15:57 -08:00
										 |  |  | 	void setFontLabelScale(qreal scale); | 
					
						
							| 
									
										
										
										
											2014-01-14 16:20:15 -02:00
										 |  |  | 	double minimum() const; | 
					
						
							|  |  |  | 	double maximum() const; | 
					
						
							| 
									
										
										
										
											2014-02-15 11:15:57 -08:00
										 |  |  | 	double fontLabelScale() const; | 
					
						
							| 
									
										
										
										
											2014-02-27 20:09:57 -08:00
										 |  |  | 	qreal valueAt(const QPointF &p) const; | 
					
						
							| 
									
										
										
										
											2014-01-14 16:20:15 -02:00
										 |  |  | 	qreal posAtValue(qreal value); | 
					
						
							| 
									
										
										
										
											2014-02-27 20:09:57 -08:00
										 |  |  | 	void setColor(const QColor &color); | 
					
						
							|  |  |  | 	void setTextColor(const QColor &color); | 
					
						
							|  |  |  | 	void animateChangeLine(const QLineF &newLine); | 
					
						
							| 
									
										
										
										
											2014-02-12 14:24:19 -02:00
										 |  |  | 	void setTextVisible(bool arg1); | 
					
						
							| 
									
										
										
										
											2014-02-15 22:54:41 -02:00
										 |  |  | 	void setLinesVisible(bool arg1); | 
					
						
							| 
									
										
										
										
											2014-02-15 21:55:31 -02:00
										 |  |  | 	void setLineSize(qreal lineSize); | 
					
						
							| 
									
										
										
										
											2014-07-29 18:48:17 -03:00
										 |  |  | 	void setLine(const QLineF& line); | 
					
						
							| 
									
										
										
										
											2014-01-14 16:20:15 -02:00
										 |  |  | 	int unitSystem; | 
					
						
							| 
									
										
										
										
											2014-02-27 20:09:57 -08:00
										 |  |  | public | 
					
						
							|  |  |  | slots: | 
					
						
							| 
									
										
										
										
											2018-01-10 17:33:20 +01:00
										 |  |  | 	virtual void updateTicks(color_index_t color = TIME_GRID); | 
					
						
							| 
									
										
										
										
											2014-02-12 14:24:19 -02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-01-16 12:32:45 -02:00
										 |  |  | signals: | 
					
						
							|  |  |  | 	void sizeChanged(); | 
					
						
							| 
									
										
										
										
											2014-01-27 15:14:42 -02:00
										 |  |  | 	void maxChanged(); | 
					
						
							| 
									
										
										
										
											2014-02-27 20:09:57 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-01-14 16:20:15 -02:00
										 |  |  | protected: | 
					
						
							| 
									
										
										
										
											2015-11-06 13:54:35 +02:00
										 |  |  | 	ProfileWidget2 *profileWidget; | 
					
						
							| 
									
										
										
										
											2014-01-14 16:20:15 -02:00
										 |  |  | 	virtual QString textForValue(double value); | 
					
						
							| 
									
										
										
										
											2014-01-19 20:14:48 -02:00
										 |  |  | 	virtual QColor colorForValue(double value); | 
					
						
							| 
									
										
										
										
											2014-01-16 19:28:33 -02:00
										 |  |  | 	Orientation orientation; | 
					
						
							| 
									
										
										
										
											2014-02-27 20:09:57 -08:00
										 |  |  | 	QList<DiveTextItem *> labels; | 
					
						
							|  |  |  | 	QList<DiveLineItem *> lines; | 
					
						
							| 
									
										
										
										
											2014-01-14 16:20:15 -02:00
										 |  |  | 	double min; | 
					
						
							|  |  |  | 	double max; | 
					
						
							|  |  |  | 	double interval; | 
					
						
							| 
									
										
										
										
											2014-02-07 17:59:21 -02:00
										 |  |  | 	double tick_size; | 
					
						
							| 
									
										
										
										
											2014-01-14 16:20:15 -02:00
										 |  |  | 	QColor textColor; | 
					
						
							| 
									
										
										
										
											2014-02-12 14:24:19 -02:00
										 |  |  | 	bool textVisibility; | 
					
						
							| 
									
										
										
										
											2014-02-15 22:54:41 -02:00
										 |  |  | 	bool lineVisibility; | 
					
						
							| 
									
										
										
										
											2014-02-15 11:15:57 -08:00
										 |  |  | 	double labelScale; | 
					
						
							| 
									
										
										
										
											2014-02-15 21:55:31 -02:00
										 |  |  | 	qreal line_size; | 
					
						
							| 
									
										
										
										
											2014-05-26 18:01:38 -03:00
										 |  |  | 	bool changed; | 
					
						
							| 
									
										
										
										
											2014-01-14 16:20:15 -02:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-01-15 10:54:33 -02:00
										 |  |  | class DepthAxis : public DiveCartesianAxis { | 
					
						
							| 
									
										
										
										
											2014-01-22 17:10:18 -02:00
										 |  |  | 	Q_OBJECT | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2015-11-06 13:54:35 +02:00
										 |  |  | 	DepthAxis(ProfileWidget2 *widget); | 
					
						
							| 
									
										
										
										
											2020-04-13 19:41:30 +02:00
										 |  |  | private: | 
					
						
							| 
									
										
										
										
											2014-01-16 18:39:13 -02:00
										 |  |  | 	QString textForValue(double value); | 
					
						
							| 
									
										
										
										
											2014-01-19 20:14:48 -02:00
										 |  |  | 	QColor colorForValue(double value); | 
					
						
							| 
									
										
										
										
											2014-02-27 20:09:57 -08:00
										 |  |  | private | 
					
						
							|  |  |  | slots: | 
					
						
							| 
									
										
										
										
											2014-01-22 17:10:18 -02:00
										 |  |  | 	void settingsChanged(); | 
					
						
							| 
									
										
										
										
											2014-01-15 10:54:33 -02:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-01-15 11:08:31 -02:00
										 |  |  | class TimeAxis : public DiveCartesianAxis { | 
					
						
							| 
									
										
										
										
											2014-01-27 17:18:35 -02:00
										 |  |  | 	Q_OBJECT | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2015-11-06 13:54:35 +02:00
										 |  |  | 	TimeAxis(ProfileWidget2 *widget); | 
					
						
							| 
									
										
										
										
											2018-01-10 17:33:20 +01:00
										 |  |  | 	void updateTicks(color_index_t color = TIME_GRID); | 
					
						
							| 
									
										
										
										
											2020-04-13 19:41:30 +02:00
										 |  |  | private: | 
					
						
							| 
									
										
										
										
											2014-01-16 18:39:13 -02:00
										 |  |  | 	QString textForValue(double value); | 
					
						
							| 
									
										
										
										
											2014-01-19 20:14:48 -02:00
										 |  |  | 	QColor colorForValue(double value); | 
					
						
							| 
									
										
										
										
											2014-01-16 18:39:13 -02:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-27 20:09:57 -08:00
										 |  |  | class TemperatureAxis : public DiveCartesianAxis { | 
					
						
							| 
									
										
										
										
											2014-01-16 18:39:13 -02:00
										 |  |  | 	Q_OBJECT | 
					
						
							| 
									
										
										
										
											2015-11-06 13:54:35 +02:00
										 |  |  | public: | 
					
						
							|  |  |  | 	TemperatureAxis(ProfileWidget2 *widget); | 
					
						
							| 
									
										
										
										
											2020-04-13 19:41:30 +02:00
										 |  |  | private: | 
					
						
							| 
									
										
										
										
											2014-01-16 18:39:13 -02:00
										 |  |  | 	QString textForValue(double value); | 
					
						
							| 
									
										
										
										
											2014-01-15 11:08:31 -02:00
										 |  |  | }; | 
					
						
							| 
									
										
										
										
											2014-01-16 12:32:45 -02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-27 20:09:57 -08:00
										 |  |  | class PartialGasPressureAxis : public DiveCartesianAxis { | 
					
						
							| 
									
										
										
										
											2014-01-27 15:14:42 -02:00
										 |  |  | 	Q_OBJECT | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2015-11-06 13:54:35 +02:00
										 |  |  | 	PartialGasPressureAxis(ProfileWidget2 *widget); | 
					
						
							| 
									
										
										
										
											2014-01-27 15:14:42 -02:00
										 |  |  | 	void setModel(DivePlotDataModel *model); | 
					
						
							| 
									
										
										
										
											2014-02-27 20:09:57 -08:00
										 |  |  | public | 
					
						
							|  |  |  | slots: | 
					
						
							| 
									
										
										
										
											2014-05-21 13:50:26 -03:00
										 |  |  | 	void settingsChanged(); | 
					
						
							| 
									
										
										
										
											2014-01-27 15:14:42 -02:00
										 |  |  | private: | 
					
						
							|  |  |  | 	DivePlotDataModel *model; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-11 19:14:46 +01:00
										 |  |  | #endif // DIVECARTESIANAXIS_H
 |