mirror of
https://github.com/subsurface/subsurface.git
synced 2024-12-01 06:30:26 +00:00
Added the code to plot the actual Graph.
This version already plots the dive-graph, with the gradient and all that jazz. One thing that will be easily spotted is that the size of the line is very thick - easily changed, I'm just using the default. As soon as everything is plotted correctly I'll fix the lines. Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
f269f86496
commit
adcae4d913
2 changed files with 19 additions and 16 deletions
|
@ -341,38 +341,38 @@ void ProfileGraphicsView::plot_depth_profile(struct graphics_context *gc, struct
|
||||||
plot_smoothed_profile(gc, pi);
|
plot_smoothed_profile(gc, pi);
|
||||||
plot_minmax_profile(gc, pi);
|
plot_minmax_profile(gc, pi);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Do the depth profile for the neat fill */
|
/* Do the depth profile for the neat fill */
|
||||||
gc->topy = 0; gc->bottomy = maxdepth;
|
gc->topy = 0; gc->bottomy = maxdepth;
|
||||||
|
|
||||||
cairo_pattern_t *pat;
|
|
||||||
pat = cairo_pattern_create_linear (0.0, 0.0, 0.0, 256.0 * plot_scale);
|
|
||||||
pattern_add_color_stop_rgba (gc, pat, 1, DEPTH_BOTTOM);
|
|
||||||
pattern_add_color_stop_rgba (gc, pat, 0, DEPTH_TOP);
|
|
||||||
|
|
||||||
cairo_set_source(gc->cr, pat);
|
|
||||||
cairo_pattern_destroy(pat);
|
|
||||||
cairo_set_line_width_scaled(gc->cr, 2);
|
|
||||||
|
|
||||||
entry = pi->entry;
|
entry = pi->entry;
|
||||||
move_to(gc, 0, 0);
|
|
||||||
|
QGraphicsPolygonItem *neatFill = new QGraphicsPolygonItem();
|
||||||
|
QPolygonF p;
|
||||||
for (i = 0; i < pi->nr; i++, entry++)
|
for (i = 0; i < pi->nr; i++, entry++)
|
||||||
line_to(gc, entry->sec, entry->depth);
|
p.append( QPointF( SCALE(gc, entry->sec, entry->depth) ));
|
||||||
|
|
||||||
/* Show any ceiling we may have encountered */
|
/* Show any ceiling we may have encountered */
|
||||||
for (i = pi->nr - 1; i >= 0; i--, entry--) {
|
for (i = pi->nr - 1; i >= 0; i--, entry--) {
|
||||||
if (entry->ndl) {
|
if (entry->ndl) {
|
||||||
/* non-zero NDL implies this is a safety stop, no ceiling */
|
/* non-zero NDL implies this is a safety stop, no ceiling */
|
||||||
line_to(gc, entry->sec, 0);
|
p.append( QPointF( SCALE(gc, entry->sec, 0) ));
|
||||||
} else if (entry->stopdepth < entry->depth) {
|
} else if (entry->stopdepth < entry->depth) {
|
||||||
line_to(gc, entry->sec, entry->stopdepth);
|
p.append( QPointF( SCALE(gc, entry->sec, entry->stopdepth) ));
|
||||||
} else {
|
} else {
|
||||||
line_to(gc, entry->sec, entry->depth);
|
p.append( QPointF( SCALE(gc, entry->sec, entry->depth) ));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
cairo_close_path(gc->cr);
|
neatFill->setPolygon(p);
|
||||||
cairo_fill(gc->cr);
|
QLinearGradient pat(0.0,0.0,0.0,p.boundingRect().height());
|
||||||
|
pat.setColorAt(1, profile_color[DEPTH_BOTTOM].first());
|
||||||
|
pat.setColorAt(0, profile_color[DEPTH_TOP].first());
|
||||||
|
|
||||||
|
neatFill->setBrush(QBrush(pat));
|
||||||
|
scene()->addItem(neatFill);
|
||||||
|
|
||||||
|
#if 0
|
||||||
/* if the user wants the deco ceiling more visible, do that here (this
|
/* if the user wants the deco ceiling more visible, do that here (this
|
||||||
* basically draws over the background that we had allowed to shine
|
* basically draws over the background that we had allowed to shine
|
||||||
* through so far) */
|
* through so far) */
|
||||||
|
|
|
@ -14,6 +14,9 @@ protected:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void plot_depth_profile(struct graphics_context *gc, struct plot_info *pi);
|
void plot_depth_profile(struct graphics_context *gc, struct plot_info *pi);
|
||||||
|
|
||||||
|
QPen defaultPen;
|
||||||
|
QBrush defaultBrush;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in a new issue