mirror of
https://github.com/subsurface/subsurface.git
synced 2024-11-30 22:20:21 +00:00
b0faf2e4b1
This was used to animate the position of the dive event items when the size of the axis changed. However, that doesn't work since quite some time. The axes size are changed when 1) switching dives 2) resizing the drawing area In the first case, the dive event items are fully recalculated. In the second case, animation speed is set to instant, since resizing of windows is done continuously on any reasonably modern desktop anyway. It might make sense on mobile, where size changes are discontinuous, but there we use static profiles anyway. Moreover, I checked a few applications and none of them had animations when switching orientation of my tablet. Let's just remove this disfunctional thing and replace it later, should someone complain. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
110 lines
3 KiB
C++
110 lines
3 KiB
C++
// SPDX-License-Identifier: GPL-2.0
|
|
#ifndef DIVECARTESIANAXIS_H
|
|
#define DIVECARTESIANAXIS_H
|
|
|
|
#include <QObject>
|
|
#include <QGraphicsLineItem>
|
|
#include <QPen>
|
|
#include "core/color.h"
|
|
#include "core/units.h"
|
|
|
|
class ProfileScene;
|
|
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;
|
|
public:
|
|
enum Orientation {
|
|
TopToBottom,
|
|
BottomToTop,
|
|
LeftToRight,
|
|
RightToLeft
|
|
};
|
|
enum class Position {
|
|
Left, Right, Bottom
|
|
};
|
|
|
|
DiveCartesianAxis(Position position, int integralDigits, int fractionalDigits, color_index_t gridColor, double dpr,
|
|
double labelScale, bool printMode, bool isGrayscale, ProfileScene &scene);
|
|
~DiveCartesianAxis();
|
|
void setBounds(double min, double max);
|
|
void setTransform(double a, double b = 0.0);
|
|
void setOrientation(Orientation orientation);
|
|
double minimum() const;
|
|
double maximum() const;
|
|
std::pair<double, double> screenMinMax() const;
|
|
qreal valueAt(const QPointF &p) const;
|
|
qreal posAtValue(qreal value) const;
|
|
void animateChangeLine(const QRectF &rect, int animSpeed);
|
|
void setTextVisible(bool arg1);
|
|
void setLinesVisible(bool arg1);
|
|
void setLine(const QLineF &line);
|
|
void updateTicks(int animSpeed);
|
|
double width() const; // only for vertical axes
|
|
double height() const; // only for horizontal axes
|
|
|
|
protected:
|
|
Position position;
|
|
int fractionalDigits;
|
|
QRectF rect; // Rectangle to fill with grid lines
|
|
QPen gridPen;
|
|
color_index_t gridColor;
|
|
ProfileScene &scene;
|
|
virtual QString textForValue(double value) const;
|
|
virtual QColor colorForValue(double value) const;
|
|
Orientation orientation;
|
|
QList<DiveTextItem *> labels;
|
|
QList<DiveLineItem *> lines;
|
|
double dataMin, dataMax;
|
|
double min, max;
|
|
bool textVisibility;
|
|
bool lineVisibility;
|
|
double labelScale;
|
|
bool changed;
|
|
double dpr;
|
|
double labelWidth, labelHeight; // maximum expected sizes of label width and height
|
|
|
|
// To format the labels and choose the label positions, the
|
|
// axis has to be aware of the displayed values. Thankfully,
|
|
// the conversion between internal data (eg. mm) and displayed
|
|
// data (e.g. ft) can be represented by an affine map ax+b.
|
|
struct Transform {
|
|
double a, b;
|
|
double to(double x) const;
|
|
double from(double y) const;
|
|
} transform;
|
|
};
|
|
|
|
class DepthAxis : public DiveCartesianAxis {
|
|
Q_OBJECT
|
|
public:
|
|
using DiveCartesianAxis::DiveCartesianAxis;
|
|
private:
|
|
QColor colorForValue(double value) const override;
|
|
};
|
|
|
|
class TimeAxis : public DiveCartesianAxis {
|
|
Q_OBJECT
|
|
public:
|
|
using DiveCartesianAxis::DiveCartesianAxis;
|
|
private:
|
|
QString textForValue(double value) const override;
|
|
QColor colorForValue(double value) const override;
|
|
};
|
|
|
|
class TemperatureAxis : public DiveCartesianAxis {
|
|
Q_OBJECT
|
|
public:
|
|
using DiveCartesianAxis::DiveCartesianAxis;
|
|
};
|
|
|
|
#endif // DIVECARTESIANAXIS_H
|