summaryrefslogtreecommitdiffstats
path: root/qt-ui/profilegraphics.h
diff options
context:
space:
mode:
authorGravatar Maximilian Güntner <maximilian.guentner@gmail.com>2013-09-25 02:07:07 +0200
committerGravatar Maximilian Güntner <maximilian.guentner@gmail.com>2013-09-27 18:42:19 +0200
commit248f1b86d15b63fe5774667f8408e2abbd5f9504 (patch)
treef284af11c30b98566de74ffd0105a927ae31cead /qt-ui/profilegraphics.h
parent3312c9a3a4306a7448c45cd2c1eba3d0cc3503c3 (diff)
downloadsubsurface-248f1b86d15b63fe5774667f8408e2abbd5f9504.tar.gz
Added a ruler which can be dragged along the profile
This patch adds a ruler QGraphicsItem which can be dragged along the profile. The ruler displays minimum, maximum and average for depth and speed (ascent/descent rate). Also, all used gas will be displayed. This also adds a new attribute to struct plot_data to store the speed (not just as velocity_t). Signed-off-by: Maximilian Güntner <maximilian.guentner@gmail.com>
Diffstat (limited to 'qt-ui/profilegraphics.h')
-rw-r--r--qt-ui/profilegraphics.h50
1 files changed, 50 insertions, 0 deletions
diff --git a/qt-ui/profilegraphics.h b/qt-ui/profilegraphics.h
index 0bcbf7529..deb729023 100644
--- a/qt-ui/profilegraphics.h
+++ b/qt-ui/profilegraphics.h
@@ -57,6 +57,49 @@ private:
QRectF nextRectangle;
};
+class RulerItem;
+
+class RulerNodeItem : public QObject, public QGraphicsEllipseItem
+{
+ Q_OBJECT
+ friend class RulerItem;
+public:
+ explicit RulerNodeItem(QGraphicsItem* parent, graphics_context gc);
+ void setRuler(RulerItem *r);
+ void recalculate();
+
+protected:
+ QVariant itemChange(GraphicsItemChange change, const QVariant & value );
+
+private:
+ graphics_context gc;
+ struct plot_data *entry;
+ RulerItem* ruler;
+};
+
+class RulerItem : public QGraphicsObject
+{
+ Q_OBJECT
+public:
+ explicit RulerItem(QGraphicsItem* parent,
+ RulerNodeItem *sourceMarker,
+ RulerNodeItem *destMarker);
+ void recalculate();
+
+ RulerNodeItem* sourceNode() const;
+ RulerNodeItem* destNode() const;
+ void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget * widget = 0);
+ QRectF boundingRect() const;
+ QPainterPath shape() const;
+
+private:
+ QPointF startPoint, endPoint;
+ RulerNodeItem *source, *dest;
+ QString text;
+ int height;
+ int paint_direction;
+};
+
class EventItem : public QGraphicsPolygonItem
{
public:
@@ -128,6 +171,10 @@ private:
void plot_pp_text();
void plot_depth_scale();
+ void create_ruler();
+ void add_ruler();
+ void remove_ruler();
+
QColor getColor(const color_indice_t i);
QColor get_sac_color(int sac, int avg_sac);
void scrollViewTo(const QPoint pos);
@@ -139,6 +186,8 @@ private:
struct dive *dive;
struct divecomputer *diveDC;
int zoomLevel;
+
+ bool rulerEnabled;
bool printMode;
bool isGrayscale;
@@ -147,6 +196,7 @@ private:
QGraphicsItem* timeMarkers;
QGraphicsItem* depthMarkers;
QGraphicsItem* diveComputer;
+ RulerItem *rulerItem;
// For 'Plan' mode.:
GraphicsTextEditor *depthEditor;