diff options
author | Tomaz Canabrava <tcanabrava@kde.org> | 2013-05-08 17:46:28 -0300 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2013-05-08 14:19:10 -0700 |
commit | ef7ace9926276f401cceb45d546a7134eeea0f00 (patch) | |
tree | 7d94c75b3b4a823989e4b77a8c9254b7abb79ccf /qt-ui | |
parent | ce8d30b938b80c334eb0869650c3c463084ae018 (diff) | |
download | subsurface-ef7ace9926276f401cceb45d546a7134eeea0f00.tar.gz |
Plot the temperature Graph
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'qt-ui')
-rw-r--r-- | qt-ui/profilegraphics.cpp | 45 | ||||
-rw-r--r-- | qt-ui/profilegraphics.h | 1 |
2 files changed, 39 insertions, 7 deletions
diff --git a/qt-ui/profilegraphics.cpp b/qt-ui/profilegraphics.cpp index 508251232..1d1b5530c 100644 --- a/qt-ui/profilegraphics.cpp +++ b/qt-ui/profilegraphics.cpp @@ -26,10 +26,6 @@ #define VELOCITY_COLORS_START_IDX VELO_STABLE #define VELOCITY_COLORS 5 -/* Scale to 0,0 -> maxx,maxy */ -#define SCALEX(gc,x) (((x)-gc->leftx)/(gc->rightx-gc->leftx)*gc->maxx) -#define SCALEY(gc,y) (((y)-gc->topy)/(gc->bottomy-gc->topy)*gc->maxy) -#define SCALE(gc,x,y) SCALEX(gc,x),SCALEY(gc,y) static struct graphics_context last_gc; static double plot_scale = SCALE_SCREEN; @@ -246,10 +242,10 @@ void ProfileGraphicsView::plot(struct dive *dive) plot_depth_profile(&gc, pi); plot_events(&gc, pi, dc); -#if 0 - /* Temperature profile */ - plot_temperature_profile(gc, pi); + /* Temperature profile */ + plot_temperature_profile(&gc, pi); +#if 0 /* Cylinder pressure plot */ plot_cylinder_pressure(gc, pi, dive, dc); @@ -630,6 +626,41 @@ void ProfileGraphicsView::resizeEvent(QResizeEvent *event) fitInView ( r.x() - 50, r.y() -50, r.width() + 100, r.height() + 100); // do a little bit of spacing; } +void ProfileGraphicsView::plot_temperature_profile(struct graphics_context *gc, struct plot_info *pi) +{ + int last = 0; + + if (!setup_temperature_limits(gc, pi)) + return; + + QPointF from; + QPointF to; + QColor color = profile_color[TEMP_PLOT].first(); + + for (int i = 0; i < pi->nr; i++) { + struct plot_data *entry = pi->entry + i; + int mkelvin = entry->temperature; + int sec = entry->sec; + if (!mkelvin) { + if (!last) + continue; + mkelvin = last; + } + if (last){ + to = QPointF(SCALE(gc, sec, mkelvin)); + //qDebug() << from << to; + QGraphicsLineItem *item = new QGraphicsLineItem(from.x(), from.y(), to.x(), to.y()); + item->setPen(QPen(color, 2*plot_scale)); + scene()->addItem(item); + from = to; + } + else{ + from = QPointF(SCALE(gc, sec, mkelvin)); + } + last = mkelvin; + } +} + void ToolTipItem::addToolTip(const QString& toolTip, const QIcon& icon) { QGraphicsPixmapItem *iconItem = 0; diff --git a/qt-ui/profilegraphics.h b/qt-ui/profilegraphics.h index d607e2615..becad197a 100644 --- a/qt-ui/profilegraphics.h +++ b/qt-ui/profilegraphics.h @@ -94,6 +94,7 @@ private: void plot_text(struct graphics_context *gc, text_render_options_t *tro, double x, double y, const QString &text); void plot_events(struct graphics_context *gc, struct plot_info *pi, struct divecomputer *dc); void plot_one_event(struct graphics_context *gc, struct plot_info *pi, struct event *event); + void plot_temperature_profile(struct graphics_context *gc, struct plot_info *pi); QPen defaultPen; QBrush defaultBrush; |