summaryrefslogtreecommitdiffstats
path: root/Smoke/gtk.c
diff options
context:
space:
mode:
authorOliver Schinagl <oliver@schinagl.nl>2007-11-29 16:37:06 (GMT)
committerOliver Schinagl <oliver@schinagl.nl>2007-11-29 16:37:06 (GMT)
commit50c4d43cf7129c19bf45330b0ce52bd2c41e45f1 (patch)
tree86a92f11ff70b65ee06dd18f38b667da32070d5e /Smoke/gtk.c
parent1c40c09a9e9b25904f316d89765bc84747bf4a81 (diff)
download2iv35-50c4d43cf7129c19bf45330b0ce52bd2c41e45f1.zip
2iv35-50c4d43cf7129c19bf45330b0ce52bd2c41e45f1.tar.gz
2iv35-50c4d43cf7129c19bf45330b0ce52bd2c41e45f1.tar.bz2
zoom in/out
Diffstat (limited to 'Smoke/gtk.c')
-rw-r--r--Smoke/gtk.c38
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",