diff options
author | Oliver Schinagl <oliver@schinagl.nl> | 2007-11-29 16:37:06 (GMT) |
---|---|---|
committer | Oliver Schinagl <oliver@schinagl.nl> | 2007-11-29 16:37:06 (GMT) |
commit | 50c4d43cf7129c19bf45330b0ce52bd2c41e45f1 (patch) | |
tree | 86a92f11ff70b65ee06dd18f38b667da32070d5e /Smoke/gtk.c | |
parent | 1c40c09a9e9b25904f316d89765bc84747bf4a81 (diff) | |
download | 2iv35-50c4d43cf7129c19bf45330b0ce52bd2c41e45f1.zip 2iv35-50c4d43cf7129c19bf45330b0ce52bd2c41e45f1.tar.gz 2iv35-50c4d43cf7129c19bf45330b0ce52bd2c41e45f1.tar.bz2 |
zoom in/out
Diffstat (limited to 'Smoke/gtk.c')
-rw-r--r-- | Smoke/gtk.c | 38 |
1 files changed, 33 insertions, 5 deletions
diff --git a/Smoke/gtk.c b/Smoke/gtk.c index 040ef84..3fd0274 100644 --- a/Smoke/gtk.c +++ b/Smoke/gtk.c @@ -58,8 +58,8 @@ *** default width and height of the drawing *** area, plus the default title of the window. ***/ -#define DEFAULT_WIDTH 800 -#define DEFAULT_HEIGHT 800 +#define DEFAULT_WIDTH 600 +#define DEFAULT_HEIGHT 600 #define DEFAULT_TITLE "2iv35 \"Smoke\" by Wilrik & Oliver" #define TIMEOUT_INTERVAL 10 @@ -145,7 +145,8 @@ configure_event (GtkWidget *widget, // fluids glMatrixMode(GL_PROJECTION); glLoadIdentity(); - gluOrtho2D(0.0, (GLdouble)w, 0.0, (GLdouble)h); + gluPerspective(45.0f, (GLfloat)w / (GLfloat)h, 0.1, 5000.0f); + //gluOrtho2D(0.0, (GLdouble)w, 0.0, (GLdouble)h); winWidth = w; winHeight = h; // endf @@ -256,7 +257,7 @@ motion_notify_event (GtkWidget *widget, if (event->state & GDK_BUTTON1_MASK) { -// g_print (" 1"); + g_print (" 1"); drag((int)event->x, (int)event->y); } @@ -275,6 +276,27 @@ motion_notify_event (GtkWidget *widget, return FALSE; } + +/*** + *** The "scroll_event" signal handler. Any processing required when + *** mousewheel is scrolled on the OpenGL- + *** capable drawing area should be done here. + ***/ +static gboolean +scroll_event (GtkWidget *widget, + GdkEventScroll *event, + gpointer data) +{ + //g_print ("%s: \"scroll_event\": ", gtk_widget_get_name (widget)); + + if (event->direction == GDK_SCROLL_UP) { + zoom_in(); + } else if (event->direction == GDK_SCROLL_DOWN) { + zoom_out(); + } + + return FALSE; +} /*** *** The "button_press_event" signal handler. Any processing required when *** mouse buttons (only left and middle buttons) are pressed on the OpenGL- @@ -290,7 +312,7 @@ button_press_event (GtkWidget *widget, if (event->button == 1) { /*** Fill in the details here. ***/ -// g_print ("button 1\n"); + g_print ("button 1\n"); // fluids click(1, 1, (int)event->x, (int)event->y); // endf @@ -399,6 +421,10 @@ key_press_event (GtkWidget *widget, // g_print ("Escape key\n"); gtk_main_quit (); break; + + case GDK_r: + toggle_mouse_rotate(); + break; default: // g_print("\n"); @@ -878,6 +904,8 @@ create_window (GdkGLConfig *glconfig) G_CALLBACK (motion_notify_event), NULL); g_signal_connect (G_OBJECT (drawing_area), "button_press_event", G_CALLBACK (button_press_event), NULL); + g_signal_connect (G_OBJECT (drawing_area), "scroll_event", + G_CALLBACK (scroll_event), NULL); /* key_press_event handler for top-level window */ g_signal_connect_swapped (G_OBJECT (window), "key_press_event", |