int selected_dive = 0;
#define ROUND_UP(x,y) ((((x)+(y)-1)/(y))*(y))
-#define MAX(x,y) ((x) > (y) ? (x) : (y))
+/*
+ * When showing dive profiles, we scale things to the
+ * current dive. However, we don't scale past less than
+ * 30 minutes or 90 ft, just so that small dives show
+ * up as such.
+ */
static int round_seconds_up(int seconds)
{
- return MAX(30, ROUND_UP(seconds, 60*10));
+ return MAX(30*60, ROUND_UP(seconds, 60*10));
}
static int round_feet_up(int feet)
{
- return MAX(45, ROUND_UP(feet+5, 15));
+ return MAX(90, ROUND_UP(feet+5, 15));
}
/* Scale to 0,0 -> maxx,maxy */
static gboolean expose_event(GtkWidget *widget, GdkEventExpose *event, gpointer data)
{
- struct dive *dive = dive_table.dives[selected_dive];
+ struct dive *dive = current_dive;
cairo_t *cr;
int w,h;
cairo_set_source_rgb(cr, 0, 0, 0);
cairo_paint(cr);
- if (dive->samples)
+ if (dive && dive->samples)
plot(cr, w, h, dive, dive->samples, dive->sample);
cairo_destroy(cr);