diff options
author | Dirk Hohndel <dirk@hohndel.org> | 2011-09-20 12:40:34 -0700 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2011-09-20 12:48:56 -0700 |
commit | 682135838ff313594c7f67fabd9be8f88a33883b (patch) | |
tree | 7fc1d8df51ce54f1529d6c50aa4d41f99283d463 /profile.c | |
parent | 6ea513246363ba2df29b0dfa9bc752c7d40c0c38 (diff) | |
download | subsurface-682135838ff313594c7f67fabd9be8f88a33883b.tar.gz |
Separate out the UI from the program logic
The following are UI toolkit specific:
gtk-gui.c - overall layout, main window of the UI
divelist.c - list of dives subsurface maintains
equipment.c - equipment / tank information for each dive
info.c - detailed dive info
print.c - printing
The rest is independent of the UI:
main.c i - program frame
dive.c i - creates and maintaines the internal dive list structure
libdivecomputer.c
uemis.c
parse-xml.c
save-xml.c - interface with dive computers and the XML files
profile.c - creates the data for the profile and draws it using cairo
This commit should contain NO functional changes, just moving code around
and a couple of minor abstractions.
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'profile.c')
-rw-r--r-- | profile.c | 38 |
1 files changed, 5 insertions, 33 deletions
@@ -1,3 +1,7 @@ +/* profile.c */ +/* creates all the necessary data for drawing the dive profile + * uses cairo to draw it + */ #include <stdio.h> #include <stdlib.h> #include <stdarg.h> @@ -72,7 +76,7 @@ static void set_source_rgba(struct graphics_context *gc, double r, double g, dou cairo_set_source_rgba(gc->cr, r, g, b, a); } -static void set_source_rgb(struct graphics_context *gc, double r, double g, double b) +void set_source_rgb(struct graphics_context *gc, double r, double g, double b) { set_source_rgba(gc, r, g, b, 1); } @@ -741,35 +745,3 @@ void plot(struct graphics_context *gc, int w, int h, struct dive *dive) cairo_stroke(gc->cr); } - -static gboolean expose_event(GtkWidget *widget, GdkEventExpose *event, gpointer data) -{ - struct dive *dive = current_dive; - struct graphics_context gc = { .printer = 0 }; - int w,h; - - w = widget->allocation.width; - h = widget->allocation.height; - - gc.cr = gdk_cairo_create(widget->window); - set_source_rgb(&gc, 0, 0, 0); - cairo_paint(gc.cr); - - if (dive) - plot(&gc, w, h, dive); - - cairo_destroy(gc.cr); - - return FALSE; -} - -GtkWidget *dive_profile_widget(void) -{ - GtkWidget *da; - - da = gtk_drawing_area_new(); - gtk_widget_set_size_request(da, 350, 250); - g_signal_connect(da, "expose_event", G_CALLBACK(expose_event), NULL); - - return da; -} |