diff options
author | neoraider <devnull@localhost> | 2007-06-25 18:55:01 +0200 |
---|---|---|
committer | neoraider <devnull@localhost> | 2007-06-25 18:55:01 +0200 |
commit | b8549034bef0de090547f32af07df248e68c7064 (patch) | |
tree | 2cf8128807a5d9e4b53e1461492b4930a2743ad3 /window.c | |
parent | a686a31daece494006e3ce841a5883472a0f412a (diff) | |
download | zoomedit-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.c | 34 |
1 files changed, 34 insertions, 0 deletions
@@ -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); |