summaryrefslogtreecommitdiffstats
path: root/window.c
diff options
context:
space:
mode:
authorneoraider <devnull@localhost>2007-06-25 18:55:01 +0200
committerneoraider <devnull@localhost>2007-06-25 18:55:01 +0200
commitb8549034bef0de090547f32af07df248e68c7064 (patch)
tree2cf8128807a5d9e4b53e1461492b4930a2743ad3 /window.c
parenta686a31daece494006e3ce841a5883472a0f412a (diff)
downloadzoomedit-b8549034bef0de090547f32af07df248e68c7064.tar
zoomedit-b8549034bef0de090547f32af07df248e68c7064.zip
zoomedit: Added Pixmap to drawing; added "point in polygon" checker; rooms are now selectable
Diffstat (limited to 'window.c')
-rw-r--r--window.c34
1 files changed, 34 insertions, 0 deletions
diff --git a/window.c b/window.c
index b62ff77..d6f0bfa 100644
--- a/window.c
+++ b/window.c
@@ -1,6 +1,9 @@
#include "window.h"
#include "ui.h"
+#include "edit.h"
#include "draw.h"
+#include "geometry.h"
+#include "level.h"
#include <gtk/gtk.h>
@@ -24,6 +27,34 @@ static gboolean scrollEvent(GtkWidget *widget, GdkEventScroll *event, gpointer u
}
}
+static gboolean buttonEvent(GtkWidget *widget, GdkEventButton *event, gpointer user_data) {
+ VERTEX v = {event->x, event->y};
+ int i;
+
+ switch(event->type) {
+ case GDK_BUTTON_PRESS:
+ switch(event->button) {
+ case 1:
+ viewToImage(&v);
+
+ setActiveRoom(NULL);
+
+ for(i = 0; i < getLevel()->nRooms; i++) {
+ if(vertexInPolygon(&v, &getLevel()->rooms[i])) {
+ setActiveRoom(&getLevel()->rooms[i]);
+
+ break;
+ }
+ }
+
+ redraw();
+ gtk_widget_queue_draw(drawingArea);
+ }
+ }
+
+ return FALSE;
+}
+
static void destroy(GtkWidget *widget, gpointer data) {
gtk_main_quit();
}
@@ -61,6 +92,7 @@ static void updateScrollbars(double x, double y) {
g_object_get(G_OBJECT(vAdjustment), "upper", &upper, "page_size", &pageSize, NULL);
g_object_set(G_OBJECT(vAdjustment), "upper", imageHeight, "page_size", height, NULL);
+ gtk_adjustment_changed(vAdjustment);
if((pageSize > upper && height < imageHeight) || upper == 0)
value = (imageHeight-height)/2;
@@ -105,6 +137,8 @@ GtkWidget* createMainWindow() {
gtk_widget_modify_bg(drawingArea, GTK_WIDGET_STATE(drawingArea), &color);
g_signal_connect(G_OBJECT(drawingArea), "configure-event", G_CALLBACK(updateScrollbarsCentered), NULL);
g_signal_connect(G_OBJECT(drawingArea), "expose-event", G_CALLBACK(drawTopView), NULL);
+ g_signal_connect(G_OBJECT(drawingArea), "button-press-event", G_CALLBACK(buttonEvent), NULL);
+ g_signal_connect(G_OBJECT(drawingArea), "button-release-event", G_CALLBACK(buttonEvent), NULL);
g_signal_connect(G_OBJECT(drawingArea), "scroll-event", G_CALLBACK(scrollEvent), NULL);
gtk_widget_add_events(drawingArea, GDK_SCROLL_MASK);
gtk_table_attach(GTK_TABLE(table), drawingArea, 0, 1, 0, 1, GTK_FILL|GTK_EXPAND|GTK_SHRINK, GTK_FILL|GTK_EXPAND|GTK_SHRINK, 0, 0);