mirror of
				https://github.com/subsurface/subsurface.git
				synced 2025-02-19 22:16:15 +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…
	
	Add table
		Add a link
		
	
		Reference in a new issue