]> git.tdb.fi Git - ext/subsurface.git/blob - profile.c
Teach the thing to actually track the currently selected dive
[ext/subsurface.git] / profile.c
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <time.h>
4
5 #include "dive.h"
6 #include "display.h"
7
8 int selected_dive = 0;
9
10 static gboolean expose_event(GtkWidget *widget, GdkEventExpose *event, gpointer data)
11 {
12         struct dive *dive = dive_table.dives[selected_dive];
13         cairo_t *cr;
14         int i;
15
16         cr = gdk_cairo_create(widget->window);
17         cairo_set_source_rgb(cr, 0, 0, 0);
18         gdk_cairo_rectangle(cr, &event->area);
19         cairo_fill(cr);
20
21         cairo_set_line_width(cr, 3);
22         cairo_set_source_rgb(cr, 1, 1, 1);
23
24         if (dive->samples) {
25                 struct sample *sample = dive->sample;
26                 cairo_move_to(cr, sample->time.seconds / 5, to_feet(sample->depth) * 3);
27                 for (i = 1; i < dive->samples; i++) {
28                         sample++;
29                         cairo_line_to(cr, sample->time.seconds / 5, to_feet(sample->depth) * 3);
30                 }
31                 cairo_stroke(cr);
32         }
33
34         cairo_destroy(cr);
35
36         return FALSE;
37 }
38
39 GtkWidget *dive_profile_frame(void)
40 {
41         GtkWidget *frame;
42         GtkWidget *da;
43
44         frame = gtk_frame_new("Dive profile");
45         gtk_widget_show(frame);
46         da = gtk_drawing_area_new();
47         gtk_widget_set_size_request(da, 450, 350);
48         g_signal_connect(da, "expose_event", G_CALLBACK(expose_event), NULL);
49         gtk_container_add(GTK_CONTAINER(frame), da);
50
51         return frame;
52 }