mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
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>
This commit is contained in:
parent
6ea5132463
commit
682135838f
18 changed files with 808 additions and 648 deletions
38
profile.c
38
profile.c
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue