zoomedit: Gro?e Teile der GUI in Klassen gekapselt.
This commit is contained in:
parent
ea3fc9f27f
commit
b660b965bc
27 changed files with 940 additions and 481 deletions
218
Drawer.cpp
Normal file
218
Drawer.cpp
Normal file
|
@ -0,0 +1,218 @@
|
||||||
|
#include "Drawer.h"
|
||||||
|
#include "Window.h"
|
||||||
|
#include "draw.h"
|
||||||
|
#include "edit.h"
|
||||||
|
#include <GL/gl.h>
|
||||||
|
#include <math.h>
|
||||||
|
|
||||||
|
|
||||||
|
void Drawer::realize(GtkWidget *widget, Drawer *drawer) {
|
||||||
|
GdkGLContext *context = gtk_widget_get_gl_context(widget);
|
||||||
|
GdkGLDrawable *drawable = gtk_widget_get_gl_drawable(widget);
|
||||||
|
|
||||||
|
if(!gdk_gl_drawable_gl_begin(drawable, context))
|
||||||
|
return;
|
||||||
|
|
||||||
|
glClearColor(0, 0, 0, 1);
|
||||||
|
|
||||||
|
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||||
|
glEnable(GL_BLEND);
|
||||||
|
|
||||||
|
glEnable(GL_LINE_SMOOTH);
|
||||||
|
|
||||||
|
glMatrixMode(GL_MODELVIEW);
|
||||||
|
glLoadIdentity();
|
||||||
|
|
||||||
|
gdk_gl_drawable_gl_end(drawable);
|
||||||
|
}
|
||||||
|
|
||||||
|
gboolean Drawer::eventHandler(GtkWidget *widget, GdkEvent *event, Drawer *drawer) {
|
||||||
|
switch(event->type) {
|
||||||
|
case GDK_CONFIGURE:
|
||||||
|
drawer->updateViewport();
|
||||||
|
drawer->updateScrollbars();
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
|
case GDK_EXPOSE:
|
||||||
|
drawTopView(widget, &event->expose, NULL);
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
|
case GDK_MOTION_NOTIFY:
|
||||||
|
drawer->updateHoveredPoint(event->motion.x, event->motion.y);
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
|
case GDK_ENTER_NOTIFY:
|
||||||
|
drawer->updateHoveredPoint(event->crossing.x, event->crossing.y);
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
|
case GDK_LEAVE_NOTIFY:
|
||||||
|
setHoveredVertex(NULL);
|
||||||
|
drawer->window->update();
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
|
case GDK_BUTTON_PRESS:
|
||||||
|
switch(event->button.button) {
|
||||||
|
case 1:
|
||||||
|
if(!getHoveredVertex())
|
||||||
|
break;
|
||||||
|
|
||||||
|
switch(drawer->window->getEditManager().getMode()) {
|
||||||
|
case EditManager::VIEW:
|
||||||
|
setActiveRoom(getHoveredRoom());
|
||||||
|
break;
|
||||||
|
|
||||||
|
case EditManager::ADD:
|
||||||
|
if(isVertexOk(getHoveredVertex()))
|
||||||
|
drawer->window->getEditManager().addVertex(*getHoveredVertex());
|
||||||
|
}
|
||||||
|
|
||||||
|
drawer->window->update();
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
|
case GDK_SCROLL:
|
||||||
|
switch(event->scroll.direction) {
|
||||||
|
case GDK_SCROLL_UP:
|
||||||
|
drawer->zoom(1, event->scroll.x/widget->allocation.width, event->scroll.y/widget->allocation.height);
|
||||||
|
break;
|
||||||
|
case GDK_SCROLL_DOWN:
|
||||||
|
drawer->zoom(-1, event->scroll.x/widget->allocation.width, event->scroll.y/widget->allocation.height);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Drawer::valueChanged(GtkAdjustment *adjustment, Drawer *drawer) {
|
||||||
|
drawer->updateScrolling();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Drawer::updateViewport() {
|
||||||
|
GdkGLContext *context = gtk_widget_get_gl_context(drawingArea);
|
||||||
|
GdkGLDrawable *drawable = gtk_widget_get_gl_drawable(drawingArea);
|
||||||
|
|
||||||
|
if(!gdk_gl_drawable_gl_begin(drawable, context))
|
||||||
|
return;
|
||||||
|
|
||||||
|
glViewport(0, 0, getWidth(), getHeight());
|
||||||
|
|
||||||
|
glMatrixMode(GL_PROJECTION);
|
||||||
|
glLoadIdentity();
|
||||||
|
|
||||||
|
if(getWidth() != 0 && getHeight() != 0) {
|
||||||
|
glTranslatef(-1, 1, 0);
|
||||||
|
glScalef(2.0f/getWidth(), -2.0f/getHeight(), 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
gdk_gl_drawable_gl_end(drawable);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Drawer::updateScrolling() {
|
||||||
|
if(getImageWidth() < getWidth())
|
||||||
|
setXTranslate((getImageWidth()-getWidth())/2);
|
||||||
|
else
|
||||||
|
setXTranslate(gtk_adjustment_get_value(hAdjustment));
|
||||||
|
|
||||||
|
if(getImageHeight() < getHeight())
|
||||||
|
setYTranslate((getImageHeight()-getHeight())/2);
|
||||||
|
else
|
||||||
|
setYTranslate(gtk_adjustment_get_value(vAdjustment));
|
||||||
|
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Drawer::updateScrollbars(float x, float y) {
|
||||||
|
const gdouble imageWidth = getImageWidth(), imageHeight = getImageHeight();
|
||||||
|
const gdouble width = getWidth(), height = getHeight();
|
||||||
|
gdouble upper, pageSize, value;
|
||||||
|
|
||||||
|
gdk_window_freeze_updates(drawingArea->window);
|
||||||
|
|
||||||
|
g_object_get(G_OBJECT(hAdjustment), "upper", &upper, "page_size", &pageSize, NULL);
|
||||||
|
g_object_set(G_OBJECT(hAdjustment), "upper", imageWidth, "page_size", width, NULL);
|
||||||
|
gtk_adjustment_changed(hAdjustment);
|
||||||
|
|
||||||
|
if((pageSize > upper && width < imageWidth) || upper == 0)
|
||||||
|
value = (imageWidth-width)/2;
|
||||||
|
else
|
||||||
|
value = (gtk_adjustment_get_value(hAdjustment)+pageSize*x)/upper*imageWidth-width*x;
|
||||||
|
gtk_adjustment_set_value(hAdjustment, MAX(MIN(value, imageWidth-width), 0));
|
||||||
|
|
||||||
|
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;
|
||||||
|
else
|
||||||
|
value = (gtk_adjustment_get_value(vAdjustment)+pageSize*y)/upper*imageHeight-height*y;
|
||||||
|
gtk_adjustment_set_value(vAdjustment, MAX(MIN(value, imageHeight-height), 0));
|
||||||
|
|
||||||
|
gdk_window_thaw_updates(drawingArea->window);
|
||||||
|
|
||||||
|
updateScrolling();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Drawer::updateHoveredPoint(float x, float y) {
|
||||||
|
Vertex v(x, y);
|
||||||
|
viewToImage(&v);
|
||||||
|
setHoveredVertex(&v);
|
||||||
|
|
||||||
|
window->update();
|
||||||
|
}
|
||||||
|
|
||||||
|
Drawer::Drawer(Window *window, GdkGLConfig *glconfig) {
|
||||||
|
this->window = window;
|
||||||
|
zoomExp = 0;
|
||||||
|
|
||||||
|
drawer = gtk_table_new(2, 2, FALSE);
|
||||||
|
g_object_ref_sink(G_OBJECT(drawer));
|
||||||
|
|
||||||
|
drawingArea = gtk_drawing_area_new();
|
||||||
|
gtk_widget_set_gl_capability(drawingArea, glconfig, NULL, TRUE, GDK_GL_RGBA_TYPE);
|
||||||
|
g_signal_connect(G_OBJECT(drawingArea), "realize", G_CALLBACK(realize), this);
|
||||||
|
g_signal_connect(G_OBJECT(drawingArea), "configure-event", G_CALLBACK(eventHandler), this);
|
||||||
|
g_signal_connect(G_OBJECT(drawingArea), "expose-event", G_CALLBACK(eventHandler), this);
|
||||||
|
g_signal_connect(G_OBJECT(drawingArea), "button-press-event", G_CALLBACK(eventHandler), this);
|
||||||
|
//g_signal_connect(G_OBJECT(drawingArea), "button-release-event", G_CALLBACK(eventHandler), this);
|
||||||
|
g_signal_connect(G_OBJECT(drawingArea), "enter-notify-event", G_CALLBACK(eventHandler), this);
|
||||||
|
g_signal_connect(G_OBJECT(drawingArea), "leave-notify-event", G_CALLBACK(eventHandler), this);
|
||||||
|
g_signal_connect(G_OBJECT(drawingArea), "motion-notify-event", G_CALLBACK(eventHandler), this);
|
||||||
|
g_signal_connect(G_OBJECT(drawingArea), "scroll-event", G_CALLBACK(eventHandler), this);
|
||||||
|
gtk_widget_add_events(drawingArea, GDK_SCROLL_MASK | GDK_POINTER_MOTION_MASK | GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK);
|
||||||
|
gtk_table_attach(GTK_TABLE(drawer), drawingArea, 0, 1, 0, 1, (GtkAttachOptions)(GTK_FILL|GTK_EXPAND|GTK_SHRINK), (GtkAttachOptions)(GTK_FILL|GTK_EXPAND|GTK_SHRINK), 0, 0);
|
||||||
|
|
||||||
|
hAdjustment = GTK_ADJUSTMENT(gtk_adjustment_new(0, 0, 0, 10, 100, 100));
|
||||||
|
GtkWidget *hScroll = gtk_hscrollbar_new(hAdjustment);
|
||||||
|
g_signal_connect(G_OBJECT(hScroll), "value-changed", G_CALLBACK(valueChanged), this);
|
||||||
|
gtk_table_attach(GTK_TABLE(drawer), hScroll, 0, 1, 1, 2, (GtkAttachOptions)(GTK_FILL|GTK_EXPAND|GTK_SHRINK), (GtkAttachOptions)0, 0, 0);
|
||||||
|
|
||||||
|
vAdjustment = GTK_ADJUSTMENT(gtk_adjustment_new(0, 0, 0, 10, 100, 100));
|
||||||
|
GtkWidget *vScroll = gtk_vscrollbar_new(vAdjustment);
|
||||||
|
g_signal_connect(G_OBJECT(vScroll), "value-changed", G_CALLBACK(valueChanged), this);
|
||||||
|
gtk_table_attach(GTK_TABLE(drawer), vScroll, 1, 2, 0, 1, (GtkAttachOptions)0, (GtkAttachOptions)(GTK_FILL|GTK_EXPAND|GTK_SHRINK), 0, 0);
|
||||||
|
|
||||||
|
gtk_widget_show_all(drawer);
|
||||||
|
}
|
||||||
|
|
||||||
|
Drawer::~Drawer() {
|
||||||
|
g_object_unref(G_OBJECT(drawer));
|
||||||
|
}
|
||||||
|
|
||||||
|
void Drawer::zoom(int zoom, float x, float y) {
|
||||||
|
zoomExp = MAX(MIN(zoomExp + zoom, 50), -100);
|
||||||
|
|
||||||
|
setScale(100*powf(1.1f, zoomExp));
|
||||||
|
|
||||||
|
updateScrollbars(x, y);
|
||||||
|
}
|
57
Drawer.h
Normal file
57
Drawer.h
Normal file
|
@ -0,0 +1,57 @@
|
||||||
|
#ifndef DRAWER_H_
|
||||||
|
#define DRAWER_H_
|
||||||
|
|
||||||
|
#include <gtk/gtk.h>
|
||||||
|
#include <gtk/gtkgl.h>
|
||||||
|
|
||||||
|
|
||||||
|
class Window;
|
||||||
|
|
||||||
|
|
||||||
|
class Drawer {
|
||||||
|
private:
|
||||||
|
GtkWidget *drawer;
|
||||||
|
GtkWidget *drawingArea;
|
||||||
|
GtkAdjustment *hAdjustment, *vAdjustment;
|
||||||
|
int zoomExp;
|
||||||
|
|
||||||
|
Window *window;
|
||||||
|
|
||||||
|
// prevent shallow copy
|
||||||
|
Drawer(const Drawer &w);
|
||||||
|
const Drawer& operator=(const Drawer &w);
|
||||||
|
|
||||||
|
void updateViewport();
|
||||||
|
void updateScrolling();
|
||||||
|
void updateScrollbars(float x = 0.5f, float y = 0.5f);
|
||||||
|
|
||||||
|
void updateHoveredPoint(float x, float y);
|
||||||
|
|
||||||
|
gint getWidth() const {
|
||||||
|
return drawingArea->allocation.width;
|
||||||
|
}
|
||||||
|
|
||||||
|
gint getHeight() const {
|
||||||
|
return drawingArea->allocation.height;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void realize(GtkWidget *widget, Drawer *drawer);
|
||||||
|
static gboolean eventHandler(GtkWidget *widget, GdkEvent *event, Drawer *drawer);
|
||||||
|
static void valueChanged(GtkAdjustment *adjustment, Drawer *drawer);
|
||||||
|
|
||||||
|
public:
|
||||||
|
Drawer(Window *window, GdkGLConfig *glconfig);
|
||||||
|
virtual ~Drawer();
|
||||||
|
|
||||||
|
void zoom(int zoom, float x = 0.5f, float y = 0.5f);
|
||||||
|
|
||||||
|
GtkWidget *getWidget() {
|
||||||
|
return drawer;
|
||||||
|
}
|
||||||
|
|
||||||
|
void update() {
|
||||||
|
gtk_widget_queue_draw(drawingArea);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /*DRAWER_H_*/
|
40
EditManager.cpp
Normal file
40
EditManager.cpp
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
#include "EditManager.h"
|
||||||
|
#include "Window.h"
|
||||||
|
#include "edit.h"
|
||||||
|
|
||||||
|
|
||||||
|
EditManager::EditManager(Window *window) {
|
||||||
|
this->window = window;
|
||||||
|
|
||||||
|
mode = VIEW;
|
||||||
|
}
|
||||||
|
|
||||||
|
void EditManager::addRoom() {
|
||||||
|
//newRoom = Room();
|
||||||
|
mode = ADD;
|
||||||
|
|
||||||
|
startAddMode();
|
||||||
|
|
||||||
|
window->update();
|
||||||
|
}
|
||||||
|
|
||||||
|
void EditManager::finishRoom() {
|
||||||
|
mode = VIEW;
|
||||||
|
|
||||||
|
if(getActiveRoom() && getActiveRoom()->size() > 2 && isPolygonOk(getActiveRoom())) {
|
||||||
|
getLevel()->push_back(*getActiveRoom());
|
||||||
|
setActiveRoom(&getLevel()->back());
|
||||||
|
|
||||||
|
endAddMode();
|
||||||
|
}
|
||||||
|
|
||||||
|
window->update();
|
||||||
|
}
|
||||||
|
|
||||||
|
void EditManager::addVertex(const Vertex &v) {
|
||||||
|
if(mode != ADD || !getActiveRoom())
|
||||||
|
return;
|
||||||
|
|
||||||
|
getActiveRoom()->push_back(v);
|
||||||
|
window->update();
|
||||||
|
}
|
36
EditManager.h
Normal file
36
EditManager.h
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
#ifndef EDITMANAGER_H_
|
||||||
|
#define EDITMANAGER_H_
|
||||||
|
|
||||||
|
#include "Room.h"
|
||||||
|
|
||||||
|
|
||||||
|
class Window;
|
||||||
|
|
||||||
|
|
||||||
|
class EditManager {
|
||||||
|
public:
|
||||||
|
enum Mode {
|
||||||
|
VIEW, ADD
|
||||||
|
};
|
||||||
|
|
||||||
|
private:
|
||||||
|
Mode mode;
|
||||||
|
|
||||||
|
Window *window;
|
||||||
|
|
||||||
|
//Room newRoom;
|
||||||
|
|
||||||
|
public:
|
||||||
|
EditManager(Window *window);
|
||||||
|
|
||||||
|
void addRoom();
|
||||||
|
void finishRoom();
|
||||||
|
|
||||||
|
void addVertex(const Vertex &v);
|
||||||
|
|
||||||
|
Mode getMode() {
|
||||||
|
return mode;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /*EDITMANAGER_H_*/
|
|
@ -1,6 +1,8 @@
|
||||||
bin_PROGRAMS = zoomedit
|
bin_PROGRAMS = zoomedit
|
||||||
zoomedit_SOURCES = zoomedit.cpp window.cpp ui.cpp draw.cpp edit.cpp Vertex.cpp \
|
zoomedit_SOURCES = zoomedit.cpp ui.cpp draw.cpp edit.cpp Vertex.cpp \
|
||||||
Line.cpp Polygon.cpp Rectangle.cpp Room.cpp Triangle.cpp \
|
Line.cpp Polygon.cpp Rectangle.cpp Room.cpp Triangle.cpp \
|
||||||
IdManager.cpp
|
IdManager.cpp WindowManager.cpp SidebarManager.cpp \
|
||||||
|
Window.cpp SidebarView.cpp SidebarAdd.cpp Drawer.cpp \
|
||||||
|
EditManager.cpp
|
||||||
zoomedit_CPPFLAGS = @GTK_CFLAGS@ @GTKGLEXT_CFLAGS@
|
zoomedit_CPPFLAGS = @GTK_CFLAGS@ @GTKGLEXT_CFLAGS@
|
||||||
zoomedit_LDADD = @GTK_LIBS@ @GTKGLEXT_LIBS@
|
zoomedit_LDADD = @GTK_LIBS@ @GTKGLEXT_LIBS@
|
141
Makefile.in
141
Makefile.in
|
@ -49,12 +49,15 @@ am__installdirs = "$(DESTDIR)$(bindir)"
|
||||||
binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
|
binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
|
||||||
PROGRAMS = $(bin_PROGRAMS)
|
PROGRAMS = $(bin_PROGRAMS)
|
||||||
am_zoomedit_OBJECTS = zoomedit-zoomedit.$(OBJEXT) \
|
am_zoomedit_OBJECTS = zoomedit-zoomedit.$(OBJEXT) \
|
||||||
zoomedit-window.$(OBJEXT) zoomedit-ui.$(OBJEXT) \
|
zoomedit-ui.$(OBJEXT) zoomedit-draw.$(OBJEXT) \
|
||||||
zoomedit-draw.$(OBJEXT) zoomedit-edit.$(OBJEXT) \
|
zoomedit-edit.$(OBJEXT) zoomedit-Vertex.$(OBJEXT) \
|
||||||
zoomedit-Vertex.$(OBJEXT) zoomedit-Line.$(OBJEXT) \
|
zoomedit-Line.$(OBJEXT) zoomedit-Polygon.$(OBJEXT) \
|
||||||
zoomedit-Polygon.$(OBJEXT) zoomedit-Rectangle.$(OBJEXT) \
|
zoomedit-Rectangle.$(OBJEXT) zoomedit-Room.$(OBJEXT) \
|
||||||
zoomedit-Room.$(OBJEXT) zoomedit-Triangle.$(OBJEXT) \
|
zoomedit-Triangle.$(OBJEXT) zoomedit-IdManager.$(OBJEXT) \
|
||||||
zoomedit-IdManager.$(OBJEXT)
|
zoomedit-WindowManager.$(OBJEXT) \
|
||||||
|
zoomedit-SidebarManager.$(OBJEXT) zoomedit-Window.$(OBJEXT) \
|
||||||
|
zoomedit-SidebarView.$(OBJEXT) zoomedit-SidebarAdd.$(OBJEXT) \
|
||||||
|
zoomedit-Drawer.$(OBJEXT) zoomedit-EditManager.$(OBJEXT)
|
||||||
zoomedit_OBJECTS = $(am_zoomedit_OBJECTS)
|
zoomedit_OBJECTS = $(am_zoomedit_OBJECTS)
|
||||||
zoomedit_DEPENDENCIES =
|
zoomedit_DEPENDENCIES =
|
||||||
DEFAULT_INCLUDES = -I.@am__isrc@
|
DEFAULT_INCLUDES = -I.@am__isrc@
|
||||||
|
@ -174,9 +177,11 @@ sysconfdir = @sysconfdir@
|
||||||
target_alias = @target_alias@
|
target_alias = @target_alias@
|
||||||
top_builddir = @top_builddir@
|
top_builddir = @top_builddir@
|
||||||
top_srcdir = @top_srcdir@
|
top_srcdir = @top_srcdir@
|
||||||
zoomedit_SOURCES = zoomedit.cpp window.cpp ui.cpp draw.cpp edit.cpp Vertex.cpp \
|
zoomedit_SOURCES = zoomedit.cpp ui.cpp draw.cpp edit.cpp Vertex.cpp \
|
||||||
Line.cpp Polygon.cpp Rectangle.cpp Room.cpp Triangle.cpp \
|
Line.cpp Polygon.cpp Rectangle.cpp Room.cpp Triangle.cpp \
|
||||||
IdManager.cpp
|
IdManager.cpp WindowManager.cpp SidebarManager.cpp \
|
||||||
|
Window.cpp SidebarView.cpp SidebarAdd.cpp Drawer.cpp \
|
||||||
|
EditManager.cpp
|
||||||
|
|
||||||
zoomedit_CPPFLAGS = @GTK_CFLAGS@ @GTKGLEXT_CFLAGS@
|
zoomedit_CPPFLAGS = @GTK_CFLAGS@ @GTKGLEXT_CFLAGS@
|
||||||
zoomedit_LDADD = @GTK_LIBS@ @GTKGLEXT_LIBS@
|
zoomedit_LDADD = @GTK_LIBS@ @GTKGLEXT_LIBS@
|
||||||
|
@ -268,17 +273,23 @@ mostlyclean-compile:
|
||||||
distclean-compile:
|
distclean-compile:
|
||||||
-rm -f *.tab.c
|
-rm -f *.tab.c
|
||||||
|
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zoomedit-Drawer.Po@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zoomedit-EditManager.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zoomedit-IdManager.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zoomedit-IdManager.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zoomedit-Line.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zoomedit-Line.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zoomedit-Polygon.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zoomedit-Polygon.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zoomedit-Rectangle.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zoomedit-Rectangle.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zoomedit-Room.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zoomedit-Room.Po@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zoomedit-SidebarAdd.Po@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zoomedit-SidebarManager.Po@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zoomedit-SidebarView.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zoomedit-Triangle.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zoomedit-Triangle.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zoomedit-Vertex.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zoomedit-Vertex.Po@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zoomedit-Window.Po@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zoomedit-WindowManager.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zoomedit-draw.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zoomedit-draw.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zoomedit-edit.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zoomedit-edit.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zoomedit-ui.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zoomedit-ui.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zoomedit-window.Po@am__quote@
|
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zoomedit-zoomedit.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zoomedit-zoomedit.Po@am__quote@
|
||||||
|
|
||||||
.cpp.o:
|
.cpp.o:
|
||||||
|
@ -309,20 +320,6 @@ zoomedit-zoomedit.obj: zoomedit.cpp
|
||||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(zoomedit_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o zoomedit-zoomedit.obj `if test -f 'zoomedit.cpp'; then $(CYGPATH_W) 'zoomedit.cpp'; else $(CYGPATH_W) '$(srcdir)/zoomedit.cpp'; fi`
|
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(zoomedit_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o zoomedit-zoomedit.obj `if test -f 'zoomedit.cpp'; then $(CYGPATH_W) 'zoomedit.cpp'; else $(CYGPATH_W) '$(srcdir)/zoomedit.cpp'; fi`
|
||||||
|
|
||||||
zoomedit-window.o: window.cpp
|
|
||||||
@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(zoomedit_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT zoomedit-window.o -MD -MP -MF $(DEPDIR)/zoomedit-window.Tpo -c -o zoomedit-window.o `test -f 'window.cpp' || echo '$(srcdir)/'`window.cpp
|
|
||||||
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/zoomedit-window.Tpo $(DEPDIR)/zoomedit-window.Po
|
|
||||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='window.cpp' object='zoomedit-window.o' libtool=no @AMDEPBACKSLASH@
|
|
||||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
|
||||||
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(zoomedit_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o zoomedit-window.o `test -f 'window.cpp' || echo '$(srcdir)/'`window.cpp
|
|
||||||
|
|
||||||
zoomedit-window.obj: window.cpp
|
|
||||||
@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(zoomedit_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT zoomedit-window.obj -MD -MP -MF $(DEPDIR)/zoomedit-window.Tpo -c -o zoomedit-window.obj `if test -f 'window.cpp'; then $(CYGPATH_W) 'window.cpp'; else $(CYGPATH_W) '$(srcdir)/window.cpp'; fi`
|
|
||||||
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/zoomedit-window.Tpo $(DEPDIR)/zoomedit-window.Po
|
|
||||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='window.cpp' object='zoomedit-window.obj' libtool=no @AMDEPBACKSLASH@
|
|
||||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
|
||||||
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(zoomedit_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o zoomedit-window.obj `if test -f 'window.cpp'; then $(CYGPATH_W) 'window.cpp'; else $(CYGPATH_W) '$(srcdir)/window.cpp'; fi`
|
|
||||||
|
|
||||||
zoomedit-ui.o: ui.cpp
|
zoomedit-ui.o: ui.cpp
|
||||||
@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(zoomedit_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT zoomedit-ui.o -MD -MP -MF $(DEPDIR)/zoomedit-ui.Tpo -c -o zoomedit-ui.o `test -f 'ui.cpp' || echo '$(srcdir)/'`ui.cpp
|
@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(zoomedit_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT zoomedit-ui.o -MD -MP -MF $(DEPDIR)/zoomedit-ui.Tpo -c -o zoomedit-ui.o `test -f 'ui.cpp' || echo '$(srcdir)/'`ui.cpp
|
||||||
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/zoomedit-ui.Tpo $(DEPDIR)/zoomedit-ui.Po
|
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/zoomedit-ui.Tpo $(DEPDIR)/zoomedit-ui.Po
|
||||||
|
@ -463,6 +460,104 @@ zoomedit-IdManager.obj: IdManager.cpp
|
||||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(zoomedit_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o zoomedit-IdManager.obj `if test -f 'IdManager.cpp'; then $(CYGPATH_W) 'IdManager.cpp'; else $(CYGPATH_W) '$(srcdir)/IdManager.cpp'; fi`
|
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(zoomedit_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o zoomedit-IdManager.obj `if test -f 'IdManager.cpp'; then $(CYGPATH_W) 'IdManager.cpp'; else $(CYGPATH_W) '$(srcdir)/IdManager.cpp'; fi`
|
||||||
|
|
||||||
|
zoomedit-WindowManager.o: WindowManager.cpp
|
||||||
|
@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(zoomedit_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT zoomedit-WindowManager.o -MD -MP -MF $(DEPDIR)/zoomedit-WindowManager.Tpo -c -o zoomedit-WindowManager.o `test -f 'WindowManager.cpp' || echo '$(srcdir)/'`WindowManager.cpp
|
||||||
|
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/zoomedit-WindowManager.Tpo $(DEPDIR)/zoomedit-WindowManager.Po
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='WindowManager.cpp' object='zoomedit-WindowManager.o' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(zoomedit_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o zoomedit-WindowManager.o `test -f 'WindowManager.cpp' || echo '$(srcdir)/'`WindowManager.cpp
|
||||||
|
|
||||||
|
zoomedit-WindowManager.obj: WindowManager.cpp
|
||||||
|
@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(zoomedit_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT zoomedit-WindowManager.obj -MD -MP -MF $(DEPDIR)/zoomedit-WindowManager.Tpo -c -o zoomedit-WindowManager.obj `if test -f 'WindowManager.cpp'; then $(CYGPATH_W) 'WindowManager.cpp'; else $(CYGPATH_W) '$(srcdir)/WindowManager.cpp'; fi`
|
||||||
|
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/zoomedit-WindowManager.Tpo $(DEPDIR)/zoomedit-WindowManager.Po
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='WindowManager.cpp' object='zoomedit-WindowManager.obj' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(zoomedit_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o zoomedit-WindowManager.obj `if test -f 'WindowManager.cpp'; then $(CYGPATH_W) 'WindowManager.cpp'; else $(CYGPATH_W) '$(srcdir)/WindowManager.cpp'; fi`
|
||||||
|
|
||||||
|
zoomedit-SidebarManager.o: SidebarManager.cpp
|
||||||
|
@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(zoomedit_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT zoomedit-SidebarManager.o -MD -MP -MF $(DEPDIR)/zoomedit-SidebarManager.Tpo -c -o zoomedit-SidebarManager.o `test -f 'SidebarManager.cpp' || echo '$(srcdir)/'`SidebarManager.cpp
|
||||||
|
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/zoomedit-SidebarManager.Tpo $(DEPDIR)/zoomedit-SidebarManager.Po
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='SidebarManager.cpp' object='zoomedit-SidebarManager.o' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(zoomedit_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o zoomedit-SidebarManager.o `test -f 'SidebarManager.cpp' || echo '$(srcdir)/'`SidebarManager.cpp
|
||||||
|
|
||||||
|
zoomedit-SidebarManager.obj: SidebarManager.cpp
|
||||||
|
@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(zoomedit_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT zoomedit-SidebarManager.obj -MD -MP -MF $(DEPDIR)/zoomedit-SidebarManager.Tpo -c -o zoomedit-SidebarManager.obj `if test -f 'SidebarManager.cpp'; then $(CYGPATH_W) 'SidebarManager.cpp'; else $(CYGPATH_W) '$(srcdir)/SidebarManager.cpp'; fi`
|
||||||
|
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/zoomedit-SidebarManager.Tpo $(DEPDIR)/zoomedit-SidebarManager.Po
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='SidebarManager.cpp' object='zoomedit-SidebarManager.obj' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(zoomedit_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o zoomedit-SidebarManager.obj `if test -f 'SidebarManager.cpp'; then $(CYGPATH_W) 'SidebarManager.cpp'; else $(CYGPATH_W) '$(srcdir)/SidebarManager.cpp'; fi`
|
||||||
|
|
||||||
|
zoomedit-Window.o: Window.cpp
|
||||||
|
@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(zoomedit_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT zoomedit-Window.o -MD -MP -MF $(DEPDIR)/zoomedit-Window.Tpo -c -o zoomedit-Window.o `test -f 'Window.cpp' || echo '$(srcdir)/'`Window.cpp
|
||||||
|
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/zoomedit-Window.Tpo $(DEPDIR)/zoomedit-Window.Po
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='Window.cpp' object='zoomedit-Window.o' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(zoomedit_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o zoomedit-Window.o `test -f 'Window.cpp' || echo '$(srcdir)/'`Window.cpp
|
||||||
|
|
||||||
|
zoomedit-Window.obj: Window.cpp
|
||||||
|
@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(zoomedit_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT zoomedit-Window.obj -MD -MP -MF $(DEPDIR)/zoomedit-Window.Tpo -c -o zoomedit-Window.obj `if test -f 'Window.cpp'; then $(CYGPATH_W) 'Window.cpp'; else $(CYGPATH_W) '$(srcdir)/Window.cpp'; fi`
|
||||||
|
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/zoomedit-Window.Tpo $(DEPDIR)/zoomedit-Window.Po
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='Window.cpp' object='zoomedit-Window.obj' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(zoomedit_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o zoomedit-Window.obj `if test -f 'Window.cpp'; then $(CYGPATH_W) 'Window.cpp'; else $(CYGPATH_W) '$(srcdir)/Window.cpp'; fi`
|
||||||
|
|
||||||
|
zoomedit-SidebarView.o: SidebarView.cpp
|
||||||
|
@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(zoomedit_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT zoomedit-SidebarView.o -MD -MP -MF $(DEPDIR)/zoomedit-SidebarView.Tpo -c -o zoomedit-SidebarView.o `test -f 'SidebarView.cpp' || echo '$(srcdir)/'`SidebarView.cpp
|
||||||
|
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/zoomedit-SidebarView.Tpo $(DEPDIR)/zoomedit-SidebarView.Po
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='SidebarView.cpp' object='zoomedit-SidebarView.o' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(zoomedit_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o zoomedit-SidebarView.o `test -f 'SidebarView.cpp' || echo '$(srcdir)/'`SidebarView.cpp
|
||||||
|
|
||||||
|
zoomedit-SidebarView.obj: SidebarView.cpp
|
||||||
|
@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(zoomedit_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT zoomedit-SidebarView.obj -MD -MP -MF $(DEPDIR)/zoomedit-SidebarView.Tpo -c -o zoomedit-SidebarView.obj `if test -f 'SidebarView.cpp'; then $(CYGPATH_W) 'SidebarView.cpp'; else $(CYGPATH_W) '$(srcdir)/SidebarView.cpp'; fi`
|
||||||
|
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/zoomedit-SidebarView.Tpo $(DEPDIR)/zoomedit-SidebarView.Po
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='SidebarView.cpp' object='zoomedit-SidebarView.obj' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(zoomedit_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o zoomedit-SidebarView.obj `if test -f 'SidebarView.cpp'; then $(CYGPATH_W) 'SidebarView.cpp'; else $(CYGPATH_W) '$(srcdir)/SidebarView.cpp'; fi`
|
||||||
|
|
||||||
|
zoomedit-SidebarAdd.o: SidebarAdd.cpp
|
||||||
|
@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(zoomedit_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT zoomedit-SidebarAdd.o -MD -MP -MF $(DEPDIR)/zoomedit-SidebarAdd.Tpo -c -o zoomedit-SidebarAdd.o `test -f 'SidebarAdd.cpp' || echo '$(srcdir)/'`SidebarAdd.cpp
|
||||||
|
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/zoomedit-SidebarAdd.Tpo $(DEPDIR)/zoomedit-SidebarAdd.Po
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='SidebarAdd.cpp' object='zoomedit-SidebarAdd.o' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(zoomedit_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o zoomedit-SidebarAdd.o `test -f 'SidebarAdd.cpp' || echo '$(srcdir)/'`SidebarAdd.cpp
|
||||||
|
|
||||||
|
zoomedit-SidebarAdd.obj: SidebarAdd.cpp
|
||||||
|
@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(zoomedit_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT zoomedit-SidebarAdd.obj -MD -MP -MF $(DEPDIR)/zoomedit-SidebarAdd.Tpo -c -o zoomedit-SidebarAdd.obj `if test -f 'SidebarAdd.cpp'; then $(CYGPATH_W) 'SidebarAdd.cpp'; else $(CYGPATH_W) '$(srcdir)/SidebarAdd.cpp'; fi`
|
||||||
|
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/zoomedit-SidebarAdd.Tpo $(DEPDIR)/zoomedit-SidebarAdd.Po
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='SidebarAdd.cpp' object='zoomedit-SidebarAdd.obj' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(zoomedit_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o zoomedit-SidebarAdd.obj `if test -f 'SidebarAdd.cpp'; then $(CYGPATH_W) 'SidebarAdd.cpp'; else $(CYGPATH_W) '$(srcdir)/SidebarAdd.cpp'; fi`
|
||||||
|
|
||||||
|
zoomedit-Drawer.o: Drawer.cpp
|
||||||
|
@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(zoomedit_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT zoomedit-Drawer.o -MD -MP -MF $(DEPDIR)/zoomedit-Drawer.Tpo -c -o zoomedit-Drawer.o `test -f 'Drawer.cpp' || echo '$(srcdir)/'`Drawer.cpp
|
||||||
|
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/zoomedit-Drawer.Tpo $(DEPDIR)/zoomedit-Drawer.Po
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='Drawer.cpp' object='zoomedit-Drawer.o' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(zoomedit_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o zoomedit-Drawer.o `test -f 'Drawer.cpp' || echo '$(srcdir)/'`Drawer.cpp
|
||||||
|
|
||||||
|
zoomedit-Drawer.obj: Drawer.cpp
|
||||||
|
@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(zoomedit_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT zoomedit-Drawer.obj -MD -MP -MF $(DEPDIR)/zoomedit-Drawer.Tpo -c -o zoomedit-Drawer.obj `if test -f 'Drawer.cpp'; then $(CYGPATH_W) 'Drawer.cpp'; else $(CYGPATH_W) '$(srcdir)/Drawer.cpp'; fi`
|
||||||
|
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/zoomedit-Drawer.Tpo $(DEPDIR)/zoomedit-Drawer.Po
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='Drawer.cpp' object='zoomedit-Drawer.obj' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(zoomedit_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o zoomedit-Drawer.obj `if test -f 'Drawer.cpp'; then $(CYGPATH_W) 'Drawer.cpp'; else $(CYGPATH_W) '$(srcdir)/Drawer.cpp'; fi`
|
||||||
|
|
||||||
|
zoomedit-EditManager.o: EditManager.cpp
|
||||||
|
@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(zoomedit_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT zoomedit-EditManager.o -MD -MP -MF $(DEPDIR)/zoomedit-EditManager.Tpo -c -o zoomedit-EditManager.o `test -f 'EditManager.cpp' || echo '$(srcdir)/'`EditManager.cpp
|
||||||
|
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/zoomedit-EditManager.Tpo $(DEPDIR)/zoomedit-EditManager.Po
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='EditManager.cpp' object='zoomedit-EditManager.o' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(zoomedit_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o zoomedit-EditManager.o `test -f 'EditManager.cpp' || echo '$(srcdir)/'`EditManager.cpp
|
||||||
|
|
||||||
|
zoomedit-EditManager.obj: EditManager.cpp
|
||||||
|
@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(zoomedit_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT zoomedit-EditManager.obj -MD -MP -MF $(DEPDIR)/zoomedit-EditManager.Tpo -c -o zoomedit-EditManager.obj `if test -f 'EditManager.cpp'; then $(CYGPATH_W) 'EditManager.cpp'; else $(CYGPATH_W) '$(srcdir)/EditManager.cpp'; fi`
|
||||||
|
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/zoomedit-EditManager.Tpo $(DEPDIR)/zoomedit-EditManager.Po
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='EditManager.cpp' object='zoomedit-EditManager.obj' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(zoomedit_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o zoomedit-EditManager.obj `if test -f 'EditManager.cpp'; then $(CYGPATH_W) 'EditManager.cpp'; else $(CYGPATH_W) '$(srcdir)/EditManager.cpp'; fi`
|
||||||
|
|
||||||
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||||
unique=`for i in $$list; do \
|
unique=`for i in $$list; do \
|
||||||
|
|
|
@ -20,7 +20,7 @@ float Polygon::signedArea() const {
|
||||||
Polygon::Direction Polygon::getDirection() const {
|
Polygon::Direction Polygon::getDirection() const {
|
||||||
float area = signedArea();
|
float area = signedArea();
|
||||||
|
|
||||||
return (area > 0) ? Triangle::CW : (area < 0) ? Triangle::CCW : Triangle::Unknown;
|
return (area > 0) ? Triangle::CW : (area < 0) ? Triangle::CCW : Triangle::UNKNOWN;
|
||||||
}
|
}
|
||||||
|
|
||||||
float Polygon::area() const {
|
float Polygon::area() const {
|
||||||
|
|
16
Sidebar.h
Normal file
16
Sidebar.h
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
#ifndef SIDEBAR_H_
|
||||||
|
#define SIDEBAR_H_
|
||||||
|
|
||||||
|
#include <gtk/gtk.h>
|
||||||
|
|
||||||
|
|
||||||
|
class Sidebar {
|
||||||
|
public:
|
||||||
|
virtual ~Sidebar() {}
|
||||||
|
|
||||||
|
virtual GtkWidget* getWidget() = 0;
|
||||||
|
|
||||||
|
virtual void update() = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /*SIDEBAR_H_*/
|
43
SidebarAdd.cpp
Normal file
43
SidebarAdd.cpp
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
#include "SidebarAdd.h"
|
||||||
|
#include "edit.h"
|
||||||
|
|
||||||
|
|
||||||
|
void SidebarAdd::buttonClicked(GtkButton *button, SidebarAdd *sidebar) {
|
||||||
|
sidebar->editor->finishRoom();
|
||||||
|
}
|
||||||
|
|
||||||
|
SidebarAdd::SidebarAdd(EditManager *editor) {
|
||||||
|
this->editor = editor;
|
||||||
|
|
||||||
|
sidebar = gtk_vbox_new(FALSE, 0);
|
||||||
|
g_object_ref_sink(G_OBJECT(sidebar));
|
||||||
|
|
||||||
|
GtkWidget *labelRoomInfo = gtk_label_new(NULL);
|
||||||
|
gtk_label_set_markup(GTK_LABEL(labelRoomInfo), "<b>Add room</b>");
|
||||||
|
gtk_misc_set_alignment(GTK_MISC(labelRoomInfo), 0.0, 0.5);
|
||||||
|
gtk_box_pack_start(GTK_BOX(sidebar), labelRoomInfo, FALSE, FALSE, 5);
|
||||||
|
|
||||||
|
buttonAdd = gtk_button_new_with_label("Add room");
|
||||||
|
g_signal_connect(G_OBJECT(buttonAdd), "clicked", G_CALLBACK(buttonClicked), this);
|
||||||
|
gtk_box_pack_end(GTK_BOX(sidebar), buttonAdd, FALSE, FALSE, 0);
|
||||||
|
|
||||||
|
gtk_widget_show_all(sidebar);
|
||||||
|
}
|
||||||
|
|
||||||
|
SidebarAdd::~SidebarAdd() {
|
||||||
|
g_object_unref(G_OBJECT(sidebar));
|
||||||
|
}
|
||||||
|
|
||||||
|
GtkWidget* SidebarAdd::getWidget() {
|
||||||
|
return sidebar;
|
||||||
|
}
|
||||||
|
|
||||||
|
void SidebarAdd::update() {
|
||||||
|
if(!getActiveRoom())
|
||||||
|
return;
|
||||||
|
|
||||||
|
if(getActiveRoom()->size() > 2 && isPolygonOk(getActiveRoom()))
|
||||||
|
gtk_widget_set_sensitive(buttonAdd, TRUE);
|
||||||
|
else
|
||||||
|
gtk_widget_set_sensitive(buttonAdd, FALSE);
|
||||||
|
}
|
30
SidebarAdd.h
Normal file
30
SidebarAdd.h
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
#ifndef SIDEBARADD_H_
|
||||||
|
#define SIDEBARADD_H_
|
||||||
|
|
||||||
|
#include "Sidebar.h"
|
||||||
|
#include "EditManager.h"
|
||||||
|
|
||||||
|
|
||||||
|
class SidebarAdd : public Sidebar {
|
||||||
|
private:
|
||||||
|
GtkWidget *sidebar;
|
||||||
|
GtkWidget *buttonAdd;
|
||||||
|
|
||||||
|
EditManager *editor;
|
||||||
|
|
||||||
|
// prevent shallow copy
|
||||||
|
SidebarAdd(const SidebarAdd &w);
|
||||||
|
const SidebarAdd& operator=(const SidebarAdd &w);
|
||||||
|
|
||||||
|
static void buttonClicked(GtkButton *button, SidebarAdd *sidebar);
|
||||||
|
|
||||||
|
public:
|
||||||
|
SidebarAdd(EditManager *editor);
|
||||||
|
virtual ~SidebarAdd();
|
||||||
|
|
||||||
|
GtkWidget* getWidget();
|
||||||
|
|
||||||
|
void update();
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /*SIDEBARADD_H_*/
|
46
SidebarManager.cpp
Normal file
46
SidebarManager.cpp
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
#include "SidebarManager.h"
|
||||||
|
|
||||||
|
|
||||||
|
SidebarManager::SidebarManager(EditManager *editor)
|
||||||
|
: sidebarView(editor), sidebarAdd(editor)
|
||||||
|
{
|
||||||
|
this->editor = editor;
|
||||||
|
activeSidebar = NULL;
|
||||||
|
|
||||||
|
sidebar = gtk_scrolled_window_new(NULL, NULL);
|
||||||
|
g_object_ref_sink(G_OBJECT(sidebar));
|
||||||
|
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sidebar), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
|
||||||
|
|
||||||
|
viewport = gtk_viewport_new(NULL, NULL);
|
||||||
|
gtk_container_add(GTK_CONTAINER(sidebar), viewport);
|
||||||
|
gtk_viewport_set_shadow_type(GTK_VIEWPORT(viewport), GTK_SHADOW_NONE);
|
||||||
|
|
||||||
|
gtk_widget_show(sidebar);
|
||||||
|
}
|
||||||
|
|
||||||
|
SidebarManager::~SidebarManager() {
|
||||||
|
g_object_unref(G_OBJECT(sidebar));
|
||||||
|
}
|
||||||
|
|
||||||
|
void SidebarManager::update() {
|
||||||
|
Sidebar *newSidebar = activeSidebar;
|
||||||
|
|
||||||
|
switch(editor->getMode()) {
|
||||||
|
case EditManager::VIEW:
|
||||||
|
newSidebar = &sidebarView;
|
||||||
|
break;
|
||||||
|
case EditManager::ADD:
|
||||||
|
newSidebar = &sidebarAdd;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(activeSidebar != newSidebar) {
|
||||||
|
if(activeSidebar)
|
||||||
|
gtk_container_remove(GTK_CONTAINER(viewport), gtk_bin_get_child(GTK_BIN(viewport)));
|
||||||
|
|
||||||
|
gtk_container_add(GTK_CONTAINER(viewport), newSidebar->getWidget());
|
||||||
|
|
||||||
|
activeSidebar = newSidebar;
|
||||||
|
}
|
||||||
|
|
||||||
|
activeSidebar->update();
|
||||||
|
}
|
37
SidebarManager.h
Normal file
37
SidebarManager.h
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
#ifndef SIDEBARMANAGER_H_
|
||||||
|
#define SIDEBARMANAGER_H_
|
||||||
|
|
||||||
|
#include <gtk/gtk.h>
|
||||||
|
#include "Sidebar.h"
|
||||||
|
#include "SidebarView.h"
|
||||||
|
#include "SidebarAdd.h"
|
||||||
|
#include "EditManager.h"
|
||||||
|
|
||||||
|
|
||||||
|
class SidebarManager {
|
||||||
|
private:
|
||||||
|
GtkWidget *sidebar, *viewport;
|
||||||
|
|
||||||
|
SidebarView sidebarView;
|
||||||
|
SidebarAdd sidebarAdd;
|
||||||
|
|
||||||
|
Sidebar *activeSidebar;
|
||||||
|
|
||||||
|
EditManager *editor;
|
||||||
|
|
||||||
|
// prevent shallow copy
|
||||||
|
SidebarManager(const SidebarManager &w);
|
||||||
|
const SidebarManager& operator=(const SidebarManager &w);
|
||||||
|
|
||||||
|
public:
|
||||||
|
SidebarManager(EditManager *editor);
|
||||||
|
virtual ~SidebarManager();
|
||||||
|
|
||||||
|
GtkWidget *getWidget() {
|
||||||
|
return sidebar;
|
||||||
|
}
|
||||||
|
|
||||||
|
void update();
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /*SIDEBARMANAGER_H_*/
|
88
SidebarView.cpp
Normal file
88
SidebarView.cpp
Normal file
|
@ -0,0 +1,88 @@
|
||||||
|
#include "SidebarView.h"
|
||||||
|
#include "edit.h"
|
||||||
|
|
||||||
|
|
||||||
|
void SidebarView::buttonClicked(GtkButton *button, SidebarView *sidebar) {
|
||||||
|
sidebar->editor->addRoom();
|
||||||
|
}
|
||||||
|
|
||||||
|
SidebarView::SidebarView(EditManager *editor) {
|
||||||
|
this->editor = editor;
|
||||||
|
|
||||||
|
sidebar = gtk_vbox_new(FALSE, 0);
|
||||||
|
g_object_ref_sink(G_OBJECT(sidebar));
|
||||||
|
|
||||||
|
GtkWidget *labelRoomInfo = gtk_label_new(NULL);
|
||||||
|
gtk_label_set_markup(GTK_LABEL(labelRoomInfo), "<b>Room info:</b>");
|
||||||
|
gtk_misc_set_alignment(GTK_MISC(labelRoomInfo), 0.0, 0.5);
|
||||||
|
gtk_box_pack_start(GTK_BOX(sidebar), labelRoomInfo, FALSE, FALSE, 5);
|
||||||
|
|
||||||
|
gtk_box_pack_start(GTK_BOX(sidebar), gtk_hseparator_new(), FALSE, FALSE, 5);
|
||||||
|
|
||||||
|
GtkWidget *labelName = gtk_label_new("Name:");
|
||||||
|
gtk_misc_set_alignment(GTK_MISC(labelName), 0.0, 0.5);
|
||||||
|
gtk_box_pack_start(GTK_BOX(sidebar), labelName, FALSE, FALSE, 0);
|
||||||
|
|
||||||
|
entryName = gtk_entry_new();
|
||||||
|
gtk_widget_set_sensitive(entryName, FALSE);
|
||||||
|
//g_signal_connect(G_OBJECT(entryName), "focus-out-event", G_CALLBACK(sidebarNameFocusOutEvent), NULL);
|
||||||
|
//gtk_widget_add_events(entryName, GDK_FOCUS_CHANGE_MASK);
|
||||||
|
gtk_box_pack_start(GTK_BOX(sidebar), entryName, FALSE, FALSE, 0);
|
||||||
|
|
||||||
|
GtkWidget *tableRoomData = gtk_table_new(2, 2, FALSE);
|
||||||
|
gtk_table_set_row_spacings(GTK_TABLE(tableRoomData), 5);
|
||||||
|
gtk_table_set_col_spacings(GTK_TABLE(tableRoomData), 10);
|
||||||
|
gtk_box_pack_start(GTK_BOX(sidebar), tableRoomData, FALSE, FALSE, 5);
|
||||||
|
|
||||||
|
GtkWidget *labelAreaLabel = gtk_label_new("Room area:");
|
||||||
|
gtk_misc_set_alignment(GTK_MISC(labelAreaLabel), 0.0, 0.5);
|
||||||
|
gtk_table_attach_defaults(GTK_TABLE(tableRoomData), labelAreaLabel, 0, 1, 0, 1);
|
||||||
|
|
||||||
|
labelArea = gtk_label_new(NULL);
|
||||||
|
gtk_misc_set_alignment(GTK_MISC(labelArea), 1.0, 0.5);
|
||||||
|
gtk_table_attach_defaults(GTK_TABLE(tableRoomData), labelArea, 1, 2, 0, 1);
|
||||||
|
|
||||||
|
GtkWidget *labelPerimeterLabel = gtk_label_new("Room perimeter:");
|
||||||
|
gtk_misc_set_alignment(GTK_MISC(labelPerimeterLabel), 0.0, 0.5);
|
||||||
|
gtk_table_attach_defaults(GTK_TABLE(tableRoomData), labelPerimeterLabel, 0, 1, 1, 2);
|
||||||
|
|
||||||
|
labelPerimeter = gtk_label_new(NULL);
|
||||||
|
gtk_misc_set_alignment(GTK_MISC(labelPerimeter), 1.0, 0.5);
|
||||||
|
gtk_table_attach_defaults(GTK_TABLE(tableRoomData), labelPerimeter, 1, 2, 1, 2);
|
||||||
|
|
||||||
|
buttonAdd = gtk_button_new_with_label("Add room");
|
||||||
|
g_signal_connect(G_OBJECT(buttonAdd), "clicked", G_CALLBACK(buttonClicked), this);
|
||||||
|
gtk_box_pack_end(GTK_BOX(sidebar), buttonAdd, FALSE, FALSE, 0);
|
||||||
|
|
||||||
|
gtk_widget_show_all(sidebar);
|
||||||
|
}
|
||||||
|
|
||||||
|
SidebarView::~SidebarView() {
|
||||||
|
g_object_unref(G_OBJECT(sidebar));
|
||||||
|
}
|
||||||
|
|
||||||
|
GtkWidget* SidebarView::getWidget() {
|
||||||
|
return sidebar;
|
||||||
|
}
|
||||||
|
|
||||||
|
void SidebarView::update() {
|
||||||
|
if(getActiveRoom()) {
|
||||||
|
gtk_entry_set_text(GTK_ENTRY(entryName), getActiveRoom()->getName().c_str());
|
||||||
|
gtk_widget_set_sensitive(entryName, TRUE);
|
||||||
|
|
||||||
|
gchar *string = g_strdup_printf("%.2f", getActiveRoom()->area());
|
||||||
|
gtk_label_set_text(GTK_LABEL(labelArea), string);
|
||||||
|
g_free(string);
|
||||||
|
|
||||||
|
string = g_strdup_printf("%.2f", getActiveRoom()->perimeter());
|
||||||
|
gtk_label_set_text(GTK_LABEL(labelPerimeter), string);
|
||||||
|
g_free(string);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
gtk_entry_set_text(GTK_ENTRY(entryName), "");
|
||||||
|
gtk_widget_set_sensitive(entryName, FALSE);
|
||||||
|
|
||||||
|
gtk_label_set_text(GTK_LABEL(labelArea), NULL);
|
||||||
|
gtk_label_set_text(GTK_LABEL(labelPerimeter), NULL);
|
||||||
|
}
|
||||||
|
}
|
30
SidebarView.h
Normal file
30
SidebarView.h
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
#ifndef SIDEBARVIEW_H_
|
||||||
|
#define SIDEBARVIEW_H_
|
||||||
|
|
||||||
|
#include "Sidebar.h"
|
||||||
|
#include "EditManager.h"
|
||||||
|
|
||||||
|
|
||||||
|
class SidebarView : public Sidebar {
|
||||||
|
private:
|
||||||
|
GtkWidget *sidebar;
|
||||||
|
GtkWidget *entryName, *labelArea, *labelPerimeter, *buttonAdd;
|
||||||
|
|
||||||
|
EditManager *editor;
|
||||||
|
|
||||||
|
// prevent shallow copy
|
||||||
|
SidebarView(const SidebarView &w);
|
||||||
|
const SidebarView& operator=(const SidebarView &w);
|
||||||
|
|
||||||
|
static void buttonClicked(GtkButton *button, SidebarView *view);
|
||||||
|
|
||||||
|
public:
|
||||||
|
SidebarView(EditManager *editor);
|
||||||
|
virtual ~SidebarView();
|
||||||
|
|
||||||
|
GtkWidget* getWidget();
|
||||||
|
|
||||||
|
void update();
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /*SIDEBARVIEW_H_*/
|
|
@ -7,7 +7,7 @@
|
||||||
Triangle::Direction Triangle::getDirection() const {
|
Triangle::Direction Triangle::getDirection() const {
|
||||||
float c = (va.getX()-vb.getX())*(vc.getY()-vb.getY()) - (vc.getX()-vb.getX())*(va.getY()-vb.getY());
|
float c = (va.getX()-vb.getX())*(vc.getY()-vb.getY()) - (vc.getX()-vb.getX())*(va.getY()-vb.getY());
|
||||||
|
|
||||||
return (c < 0) ? CW : (c > 0) ? CCW : Unknown;
|
return (c < 0) ? CW : (c > 0) ? CCW : UNKNOWN;
|
||||||
}
|
}
|
||||||
|
|
||||||
float Triangle::area() const {
|
float Triangle::area() const {
|
||||||
|
|
|
@ -10,7 +10,7 @@ class Triangle {
|
||||||
Vertex va, vb, vc;
|
Vertex va, vb, vc;
|
||||||
public:
|
public:
|
||||||
enum Direction {
|
enum Direction {
|
||||||
CW, CCW, Unknown
|
CW, CCW, UNKNOWN
|
||||||
};
|
};
|
||||||
|
|
||||||
Triangle() {}
|
Triangle() {}
|
||||||
|
|
55
Window.cpp
Normal file
55
Window.cpp
Normal file
|
@ -0,0 +1,55 @@
|
||||||
|
#include "Window.h"
|
||||||
|
#include "WindowManager.h"
|
||||||
|
#include "ui.h"
|
||||||
|
#include "edit.h"
|
||||||
|
|
||||||
|
|
||||||
|
gboolean Window::deleteEvent(GtkWidget *widget, GdkEvent *event, Window *window) {
|
||||||
|
gtk_widget_hide(widget);
|
||||||
|
|
||||||
|
window->manager->windowClosed(window);
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
Window::Window(GdkGLConfig *glconfig, WindowManager *manager)
|
||||||
|
: editor(this), drawer(this, glconfig), sidebar(&editor)
|
||||||
|
{
|
||||||
|
this->manager = manager;
|
||||||
|
setLevel(&level);
|
||||||
|
|
||||||
|
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
|
||||||
|
gtk_window_set_default_size(GTK_WINDOW(window), 640, 480);
|
||||||
|
g_signal_connect(G_OBJECT(window), "delete-event", G_CALLBACK(deleteEvent), this);
|
||||||
|
|
||||||
|
GtkWidget *vbox = gtk_vbox_new(FALSE, 0);
|
||||||
|
gtk_container_add(GTK_CONTAINER(window), vbox);
|
||||||
|
|
||||||
|
gtk_box_pack_start(GTK_BOX(vbox), getMenu(), FALSE, FALSE, 0);
|
||||||
|
gtk_box_pack_start(GTK_BOX(vbox), getToolbar(), FALSE, FALSE, 0);
|
||||||
|
|
||||||
|
gtk_window_add_accel_group(GTK_WINDOW(window), getAccels());
|
||||||
|
|
||||||
|
GtkWidget *hPaned = gtk_hpaned_new();
|
||||||
|
gtk_box_pack_end(GTK_BOX(vbox), hPaned, TRUE, TRUE, 0);
|
||||||
|
|
||||||
|
gtk_paned_pack1(GTK_PANED(hPaned), drawer.getWidget(), TRUE, TRUE);
|
||||||
|
|
||||||
|
gtk_paned_pack2(GTK_PANED(hPaned), sidebar.getWidget(), FALSE, TRUE);
|
||||||
|
sidebar.update();
|
||||||
|
|
||||||
|
gtk_widget_show_all(vbox);
|
||||||
|
}
|
||||||
|
|
||||||
|
Window::~Window() {
|
||||||
|
gtk_widget_destroy(window);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Window::show() {
|
||||||
|
gtk_widget_show(window);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Window::update() {
|
||||||
|
drawer.update();
|
||||||
|
sidebar.update();
|
||||||
|
}
|
50
Window.h
Normal file
50
Window.h
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
#ifndef WINDOW_H_
|
||||||
|
#define WINDOW_H_
|
||||||
|
|
||||||
|
#include <gtk/gtk.h>
|
||||||
|
#include <gtk/gtkgl.h>
|
||||||
|
#include "Drawer.h"
|
||||||
|
#include "SidebarManager.h"
|
||||||
|
#include "EditManager.h"
|
||||||
|
#include "Level.h"
|
||||||
|
|
||||||
|
|
||||||
|
class WindowManager;
|
||||||
|
|
||||||
|
|
||||||
|
class Window {
|
||||||
|
private:
|
||||||
|
GtkWidget *window;
|
||||||
|
|
||||||
|
EditManager editor;
|
||||||
|
|
||||||
|
Drawer drawer;
|
||||||
|
SidebarManager sidebar;
|
||||||
|
|
||||||
|
WindowManager *manager;
|
||||||
|
|
||||||
|
Level level;
|
||||||
|
|
||||||
|
// prevent shallow copy
|
||||||
|
Window(const Window &w);
|
||||||
|
const Window& operator=(const Window &w);
|
||||||
|
|
||||||
|
static gboolean deleteEvent(GtkWidget *widget, GdkEvent *event, Window *window);
|
||||||
|
public:
|
||||||
|
Window(GdkGLConfig *glconfig, WindowManager *manager);
|
||||||
|
virtual ~Window();
|
||||||
|
|
||||||
|
void show();
|
||||||
|
|
||||||
|
void update();
|
||||||
|
|
||||||
|
EditManager& getEditManager() {
|
||||||
|
return editor;
|
||||||
|
}
|
||||||
|
|
||||||
|
Level& getLevel() {
|
||||||
|
return level;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /*WINDOW_H_*/
|
28
WindowManager.cpp
Normal file
28
WindowManager.cpp
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
#include "WindowManager.h"
|
||||||
|
|
||||||
|
|
||||||
|
WindowManager::WindowManager(GdkGLConfig *glconfig) {
|
||||||
|
this->glconfig = glconfig;
|
||||||
|
|
||||||
|
windows.push_back(new Window(glconfig, this));
|
||||||
|
}
|
||||||
|
|
||||||
|
WindowManager::~WindowManager() {
|
||||||
|
for(std::list<Window*>::iterator w = windows.begin(); w != windows.end(); w++)
|
||||||
|
delete *w;
|
||||||
|
}
|
||||||
|
|
||||||
|
void WindowManager::run() {
|
||||||
|
for(std::list<Window*>::iterator w = windows.begin(); w != windows.end(); w++)
|
||||||
|
(*w)->show();
|
||||||
|
|
||||||
|
gtk_main();
|
||||||
|
}
|
||||||
|
|
||||||
|
void WindowManager::windowClosed(Window *window) {
|
||||||
|
windows.remove(window);
|
||||||
|
delete window;
|
||||||
|
|
||||||
|
if(windows.empty())
|
||||||
|
gtk_main_quit();
|
||||||
|
}
|
24
WindowManager.h
Normal file
24
WindowManager.h
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
#ifndef WINDOWMANAGER_H_
|
||||||
|
#define WINDOWMANAGER_H_
|
||||||
|
|
||||||
|
#include <list>
|
||||||
|
#include <gtk/gtk.h>
|
||||||
|
#include <gtk/gtkgl.h>
|
||||||
|
#include "Window.h"
|
||||||
|
|
||||||
|
|
||||||
|
class WindowManager {
|
||||||
|
private:
|
||||||
|
GdkGLConfig *glconfig;
|
||||||
|
std::list<Window*> windows;
|
||||||
|
|
||||||
|
public:
|
||||||
|
WindowManager(GdkGLConfig *glconfig);
|
||||||
|
virtual ~WindowManager();
|
||||||
|
|
||||||
|
void run();
|
||||||
|
|
||||||
|
void windowClosed(Window *window);
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /*WINDOWMANAGER_H_*/
|
2
draw.cpp
2
draw.cpp
|
@ -193,7 +193,7 @@ float getScale() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void setScale(float s) {
|
void setScale(float s) {
|
||||||
scale = MAX(0.005, MIN(s, 10000));
|
scale = s;
|
||||||
}
|
}
|
||||||
|
|
||||||
void imageToView(Vertex *v) {
|
void imageToView(Vertex *v) {
|
||||||
|
|
9
edit.cpp
9
edit.cpp
|
@ -1,4 +1,3 @@
|
||||||
#include "Level.h"
|
|
||||||
#include "edit.h"
|
#include "edit.h"
|
||||||
|
|
||||||
|
|
||||||
|
@ -14,6 +13,8 @@ static Room addRoom;
|
||||||
static Vertex hoveredVertex;
|
static Vertex hoveredVertex;
|
||||||
static int hasHoveredVertex = 0;
|
static int hasHoveredVertex = 0;
|
||||||
|
|
||||||
|
static IdManager idManager;
|
||||||
|
|
||||||
int getEditMode() {
|
int getEditMode() {
|
||||||
return editMode;
|
return editMode;
|
||||||
}
|
}
|
||||||
|
@ -67,7 +68,7 @@ void setHoveredVertex(Vertex *v) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void startAddMode() {
|
void startAddMode() {
|
||||||
addRoom = Room();
|
addRoom = Room(idManager.generate("room"));
|
||||||
activeRoom = &addRoom;
|
activeRoom = &addRoom;
|
||||||
|
|
||||||
editMode = EDIT_MODE_ADD;
|
editMode = EDIT_MODE_ADD;
|
||||||
|
@ -81,6 +82,10 @@ Room *getHoveredRoom() {
|
||||||
return hoveredRoom;
|
return hoveredRoom;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
IdManager *getIdManager() {
|
||||||
|
return &idManager;
|
||||||
|
}
|
||||||
|
|
||||||
static bool isLineOk(Line *l) {
|
static bool isLineOk(Line *l) {
|
||||||
Line l2;
|
Line l2;
|
||||||
|
|
||||||
|
|
3
edit.h
3
edit.h
|
@ -2,6 +2,7 @@
|
||||||
#define EDIT_H_
|
#define EDIT_H_
|
||||||
|
|
||||||
#include "Level.h"
|
#include "Level.h"
|
||||||
|
#include "IdManager.h"
|
||||||
|
|
||||||
#define EDIT_MODE_VIEW 0
|
#define EDIT_MODE_VIEW 0
|
||||||
#define EDIT_MODE_SELECTED 1
|
#define EDIT_MODE_SELECTED 1
|
||||||
|
@ -23,6 +24,8 @@ Room *getHoveredRoom();
|
||||||
Vertex *getHoveredVertex();
|
Vertex *getHoveredVertex();
|
||||||
void setHoveredVertex(Vertex *v);
|
void setHoveredVertex(Vertex *v);
|
||||||
|
|
||||||
|
IdManager *getIdManager();
|
||||||
|
|
||||||
bool isVertexOk(Vertex *v);
|
bool isVertexOk(Vertex *v);
|
||||||
bool isPolygonOk(Polygon *polygon);
|
bool isPolygonOk(Polygon *polygon);
|
||||||
|
|
||||||
|
|
7
ui.cpp
7
ui.cpp
|
@ -1,6 +1,5 @@
|
||||||
#include "ui.h"
|
#include "ui.h"
|
||||||
#include "draw.h"
|
#include "draw.h"
|
||||||
#include "window.h"
|
|
||||||
#include <gtk/gtk.h>
|
#include <gtk/gtk.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
@ -27,12 +26,12 @@ static const gchar *uiData =
|
||||||
|
|
||||||
|
|
||||||
static void handleAction(GtkAction *action, gpointer user_data) {
|
static void handleAction(GtkAction *action, gpointer user_data) {
|
||||||
const gchar* name = gtk_action_get_name(action);
|
//const gchar* name = gtk_action_get_name(action);
|
||||||
|
|
||||||
if(!strcmp(name, "zoomIn"))
|
/*if(!strcmp(name, "zoomIn"))
|
||||||
zoomInCentered(1.2f);
|
zoomInCentered(1.2f);
|
||||||
else if(!strcmp(name, "zoomOut"))
|
else if(!strcmp(name, "zoomOut"))
|
||||||
zoomOutCentered(1.2f);
|
zoomOutCentered(1.2f);*/
|
||||||
}
|
}
|
||||||
|
|
||||||
static GtkActionGroup *createActions() {
|
static GtkActionGroup *createActions() {
|
||||||
|
|
419
window.cpp
419
window.cpp
|
@ -1,419 +0,0 @@
|
||||||
#include "window.h"
|
|
||||||
#include "ui.h"
|
|
||||||
#include "edit.h"
|
|
||||||
#include "draw.h"
|
|
||||||
#include <gtk/gtk.h>
|
|
||||||
#include <gtk/gtkgl.h>
|
|
||||||
#include <GL/gl.h>
|
|
||||||
|
|
||||||
|
|
||||||
static GtkWidget *drawingArea = NULL, *sidebarView = NULL, *sidebarAdd = NULL;
|
|
||||||
static GtkAdjustment *hAdjustment = NULL, *vAdjustment = NULL;
|
|
||||||
|
|
||||||
static GtkWidget *entryName, *labelArea = NULL, *labelPerimeter = NULL, *buttonAdd = NULL, *buttonAddDo = NULL;
|
|
||||||
|
|
||||||
|
|
||||||
static void refreshScrolling() {
|
|
||||||
if(getImageWidth() < drawingArea->allocation.width)
|
|
||||||
setXTranslate((getImageWidth()-drawingArea->allocation.width)/2);
|
|
||||||
else
|
|
||||||
setXTranslate(gtk_adjustment_get_value(hAdjustment));
|
|
||||||
|
|
||||||
if(getImageHeight() < drawingArea->allocation.height)
|
|
||||||
setYTranslate((getImageHeight()-drawingArea->allocation.height)/2);
|
|
||||||
else
|
|
||||||
setYTranslate(gtk_adjustment_get_value(vAdjustment));
|
|
||||||
|
|
||||||
gtk_widget_queue_draw(drawingArea);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void updateScrollbars(float x, float y) {
|
|
||||||
const gdouble imageWidth = getImageWidth(), imageHeight = getImageHeight();
|
|
||||||
const gdouble width = drawingArea->allocation.width, height = drawingArea->allocation.height;
|
|
||||||
gdouble upper, pageSize, value;
|
|
||||||
|
|
||||||
gdk_window_freeze_updates(drawingArea->window);
|
|
||||||
|
|
||||||
g_object_get(G_OBJECT(hAdjustment), "upper", &upper, "page_size", &pageSize, NULL);
|
|
||||||
g_object_set(G_OBJECT(hAdjustment), "upper", imageWidth, "page_size", width, NULL);
|
|
||||||
gtk_adjustment_changed(hAdjustment);
|
|
||||||
|
|
||||||
if((pageSize > upper && width < imageWidth) || upper == 0)
|
|
||||||
value = (imageWidth-width)/2;
|
|
||||||
else
|
|
||||||
value = (gtk_adjustment_get_value(hAdjustment)+pageSize*x)/upper*imageWidth-width*x;
|
|
||||||
gtk_adjustment_set_value(hAdjustment, MAX(MIN(value, imageWidth-width), 0));
|
|
||||||
|
|
||||||
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;
|
|
||||||
else
|
|
||||||
value = (gtk_adjustment_get_value(vAdjustment)+pageSize*y)/upper*imageHeight-height*y;
|
|
||||||
gtk_adjustment_set_value(vAdjustment, MAX(MIN(value, imageHeight-height), 0));
|
|
||||||
|
|
||||||
gdk_window_thaw_updates(drawingArea->window);
|
|
||||||
|
|
||||||
refreshScrolling();
|
|
||||||
}
|
|
||||||
|
|
||||||
static gboolean deleteEvent(GtkWidget *widget, GdkEvent *event, gpointer data) {
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void realize(GtkWidget *widget, gpointer data) {
|
|
||||||
GdkGLContext *context = gtk_widget_get_gl_context(widget);
|
|
||||||
GdkGLDrawable *drawable = gtk_widget_get_gl_drawable(widget);
|
|
||||||
|
|
||||||
if(!gdk_gl_drawable_gl_begin(drawable, context))
|
|
||||||
return;
|
|
||||||
|
|
||||||
glClearColor(0.0, 0.0, 0.0, 1.0);
|
|
||||||
|
|
||||||
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
|
||||||
glEnable(GL_BLEND);
|
|
||||||
|
|
||||||
glEnable(GL_LINE_SMOOTH);
|
|
||||||
|
|
||||||
glViewport(0, 0, widget->allocation.width, widget->allocation.height);
|
|
||||||
|
|
||||||
glMatrixMode(GL_PROJECTION);
|
|
||||||
glLoadIdentity();
|
|
||||||
|
|
||||||
if(widget->allocation.width != 0 && widget->allocation.height != 0) {
|
|
||||||
glTranslatef(-1, 1, 0);
|
|
||||||
glScalef(2.0f/widget->allocation.width, -2.0f/widget->allocation.height, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
glMatrixMode(GL_MODELVIEW);
|
|
||||||
glLoadIdentity();
|
|
||||||
|
|
||||||
gdk_gl_drawable_gl_end(drawable);
|
|
||||||
}
|
|
||||||
|
|
||||||
static gboolean configureEvent(GtkWidget *widget, GdkEventConfigure *event, gpointer data) {
|
|
||||||
GdkGLContext *context = gtk_widget_get_gl_context(widget);
|
|
||||||
GdkGLDrawable *drawable = gtk_widget_get_gl_drawable(widget);
|
|
||||||
|
|
||||||
if(!gdk_gl_drawable_gl_begin(drawable, context))
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
glViewport(0, 0, widget->allocation.width, widget->allocation.height);
|
|
||||||
|
|
||||||
glMatrixMode(GL_PROJECTION);
|
|
||||||
glLoadIdentity();
|
|
||||||
|
|
||||||
if(widget->allocation.width != 0 && widget->allocation.height != 0) {
|
|
||||||
glTranslatef(-1, 1, 0);
|
|
||||||
glScalef(2.0f/widget->allocation.width, -2.0f/widget->allocation.height, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
gdk_gl_drawable_gl_end(drawable);
|
|
||||||
|
|
||||||
updateScrollbars(0.5, 0.5);
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static gboolean scrollEvent(GtkWidget *widget, GdkEventScroll *event, gpointer user_data) {
|
|
||||||
const float x = event->x/widget->allocation.width, y = event->y/widget->allocation.height;
|
|
||||||
|
|
||||||
switch(event->direction) {
|
|
||||||
case GDK_SCROLL_UP:
|
|
||||||
zoomIn(1.1f, x, y);
|
|
||||||
return TRUE;
|
|
||||||
case GDK_SCROLL_DOWN:
|
|
||||||
zoomOut(1.1f, x, y);
|
|
||||||
return TRUE;
|
|
||||||
default:
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static gboolean buttonEvent(GtkWidget *widget, GdkEventButton *event, gpointer user_data) {
|
|
||||||
Vertex v(event->x, event->y);
|
|
||||||
|
|
||||||
switch(event->type) {
|
|
||||||
case GDK_BUTTON_PRESS:
|
|
||||||
switch(event->button) {
|
|
||||||
case 1:
|
|
||||||
switch(getEditMode()) {
|
|
||||||
case EDIT_MODE_VIEW:
|
|
||||||
case EDIT_MODE_SELECTED:
|
|
||||||
setActiveRoom(getHoveredRoom());
|
|
||||||
|
|
||||||
updateSidebar();
|
|
||||||
|
|
||||||
break;
|
|
||||||
case EDIT_MODE_ADD:
|
|
||||||
viewToImage(&v);
|
|
||||||
|
|
||||||
if(isVertexOk(&v)) {
|
|
||||||
getActiveRoom()->push_back(v);
|
|
||||||
updateSidebar();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
gtk_widget_queue_draw(drawingArea);
|
|
||||||
}
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
default:
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
gboolean crossingNotifyEvent(GtkWidget *widget, GdkEventCrossing *event, gpointer user_data) {
|
|
||||||
Vertex v(event->x, event->y);
|
|
||||||
|
|
||||||
switch(event->type) {
|
|
||||||
case GDK_ENTER_NOTIFY:
|
|
||||||
viewToImage(&v);
|
|
||||||
|
|
||||||
setHoveredVertex(&v);
|
|
||||||
|
|
||||||
gtk_widget_queue_draw(drawingArea);
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
case GDK_LEAVE_NOTIFY:
|
|
||||||
setHoveredVertex(NULL);
|
|
||||||
|
|
||||||
gtk_widget_queue_draw(drawingArea);
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
default:
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
gboolean motionNotifyEvent(GtkWidget *widget, GdkEventMotion *event, gpointer user_data) {
|
|
||||||
Vertex v(event->x, event->y);
|
|
||||||
Room *last = getHoveredRoom();
|
|
||||||
|
|
||||||
viewToImage(&v);
|
|
||||||
|
|
||||||
setHoveredVertex(&v);
|
|
||||||
|
|
||||||
if(getHoveredRoom() != last || getEditMode() == EDIT_MODE_ADD)
|
|
||||||
gtk_widget_queue_draw(drawingArea);
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void destroy(GtkWidget *widget, gpointer data) {
|
|
||||||
gtk_main_quit();
|
|
||||||
}
|
|
||||||
|
|
||||||
static void sidebarNameChanged(GtkEditable *editable, gpointer user_data) {
|
|
||||||
if(getActiveRoom() == NULL) return;
|
|
||||||
|
|
||||||
getActiveRoom()->setName(std::string(gtk_entry_get_text(GTK_ENTRY(entryName))));
|
|
||||||
}
|
|
||||||
|
|
||||||
static void sidebarButtonClicked(GtkButton *button, gpointer user_data) {
|
|
||||||
if(button == GTK_BUTTON(buttonAdd)) {
|
|
||||||
startAddMode();
|
|
||||||
updateSidebar();
|
|
||||||
|
|
||||||
gtk_widget_queue_draw(drawingArea);
|
|
||||||
}
|
|
||||||
else if(button == GTK_BUTTON(buttonAddDo)) {
|
|
||||||
if(getActiveRoom() && getActiveRoom()->size() > 2 && isPolygonOk(getActiveRoom())) {
|
|
||||||
getLevel()->push_back(*getActiveRoom());
|
|
||||||
setActiveRoom(&getLevel()->back());
|
|
||||||
}
|
|
||||||
|
|
||||||
endAddMode();
|
|
||||||
updateSidebar();
|
|
||||||
|
|
||||||
gtk_widget_queue_draw(drawingArea);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static GtkWidget* createSidebar() {
|
|
||||||
GtkWidget *sidebar, *labelRoomInfo, *labelName;
|
|
||||||
GtkWidget *tableRoomData, *labelAreaLabel, *labelPerimeterLabel;
|
|
||||||
|
|
||||||
sidebar = gtk_hbox_new(FALSE, 0);
|
|
||||||
|
|
||||||
// View sidebar
|
|
||||||
sidebarView = gtk_vbox_new(FALSE, 0);
|
|
||||||
gtk_box_pack_start(GTK_BOX(sidebar), sidebarView, FALSE, FALSE, 5);
|
|
||||||
|
|
||||||
labelRoomInfo = gtk_label_new(NULL);
|
|
||||||
gtk_label_set_markup(GTK_LABEL(labelRoomInfo), "<b>Room info:</b>");
|
|
||||||
gtk_misc_set_alignment(GTK_MISC(labelRoomInfo), 0.0, 0.5);
|
|
||||||
gtk_box_pack_start(GTK_BOX(sidebarView), labelRoomInfo, FALSE, FALSE, 5);
|
|
||||||
|
|
||||||
gtk_box_pack_start(GTK_BOX(sidebarView), gtk_hseparator_new(), FALSE, FALSE, 5);
|
|
||||||
|
|
||||||
labelName = gtk_label_new("Name:");
|
|
||||||
gtk_misc_set_alignment(GTK_MISC(labelName), 0.0, 0.5);
|
|
||||||
gtk_box_pack_start(GTK_BOX(sidebarView), labelName, FALSE, FALSE, 0);
|
|
||||||
|
|
||||||
entryName = gtk_entry_new();
|
|
||||||
gtk_widget_set_sensitive(entryName, FALSE);
|
|
||||||
g_signal_connect(G_OBJECT(entryName), "changed", G_CALLBACK(sidebarNameChanged), NULL);
|
|
||||||
gtk_box_pack_start(GTK_BOX(sidebarView), entryName, FALSE, FALSE, 0);
|
|
||||||
|
|
||||||
tableRoomData = gtk_table_new(2, 2, FALSE);
|
|
||||||
gtk_table_set_row_spacings(GTK_TABLE(tableRoomData), 5);
|
|
||||||
gtk_table_set_col_spacings(GTK_TABLE(tableRoomData), 10);
|
|
||||||
gtk_box_pack_start(GTK_BOX(sidebarView), tableRoomData, FALSE, FALSE, 5);
|
|
||||||
|
|
||||||
labelAreaLabel = gtk_label_new("Room area:");
|
|
||||||
gtk_misc_set_alignment(GTK_MISC(labelAreaLabel), 0.0, 0.5);
|
|
||||||
gtk_table_attach_defaults(GTK_TABLE(tableRoomData), labelAreaLabel, 0, 1, 0, 1);
|
|
||||||
|
|
||||||
labelArea = gtk_label_new(NULL);
|
|
||||||
gtk_misc_set_alignment(GTK_MISC(labelArea), 1.0, 0.5);
|
|
||||||
gtk_table_attach_defaults(GTK_TABLE(tableRoomData), labelArea, 1, 2, 0, 1);
|
|
||||||
|
|
||||||
labelPerimeterLabel = gtk_label_new("Room perimeter:");
|
|
||||||
gtk_misc_set_alignment(GTK_MISC(labelPerimeterLabel), 0.0, 0.5);
|
|
||||||
gtk_table_attach_defaults(GTK_TABLE(tableRoomData), labelPerimeterLabel, 0, 1, 1, 2);
|
|
||||||
|
|
||||||
labelPerimeter = gtk_label_new(NULL);
|
|
||||||
gtk_misc_set_alignment(GTK_MISC(labelPerimeter), 1.0, 0.5);
|
|
||||||
gtk_table_attach_defaults(GTK_TABLE(tableRoomData), labelPerimeter, 1, 2, 1, 2);
|
|
||||||
|
|
||||||
buttonAdd = gtk_button_new_with_label("Add room");
|
|
||||||
g_signal_connect(G_OBJECT(buttonAdd), "clicked", G_CALLBACK(sidebarButtonClicked), NULL);
|
|
||||||
gtk_box_pack_end(GTK_BOX(sidebarView), buttonAdd, FALSE, FALSE, 0);
|
|
||||||
|
|
||||||
// Add sidebar
|
|
||||||
sidebarAdd = gtk_vbox_new(FALSE, 0);
|
|
||||||
gtk_box_pack_start(GTK_BOX(sidebar), sidebarAdd, FALSE, FALSE, 5);
|
|
||||||
|
|
||||||
labelRoomInfo = gtk_label_new(NULL);
|
|
||||||
gtk_label_set_markup(GTK_LABEL(labelRoomInfo), "<b>Add room</b>");
|
|
||||||
gtk_misc_set_alignment(GTK_MISC(labelRoomInfo), 0.0, 0.5);
|
|
||||||
gtk_box_pack_start(GTK_BOX(sidebarAdd), labelRoomInfo, FALSE, FALSE, 5);
|
|
||||||
|
|
||||||
buttonAddDo = gtk_button_new_with_label("Add room");
|
|
||||||
g_signal_connect(G_OBJECT(buttonAddDo), "clicked", G_CALLBACK(sidebarButtonClicked), NULL);
|
|
||||||
gtk_box_pack_end(GTK_BOX(sidebarAdd), buttonAddDo, FALSE, FALSE, 0);
|
|
||||||
|
|
||||||
return sidebar;
|
|
||||||
}
|
|
||||||
|
|
||||||
GtkWidget* createMainWindow(GdkGLConfig *glconfig) {
|
|
||||||
GtkWidget *window, *hPaned, *vbox, *table, *vScroll, *hScroll, *sidebar;
|
|
||||||
|
|
||||||
|
|
||||||
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
|
|
||||||
gtk_window_set_default_size(GTK_WINDOW(window), 640, 480);
|
|
||||||
g_signal_connect(G_OBJECT(window), "delete-event", G_CALLBACK(deleteEvent), NULL);
|
|
||||||
g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(destroy), NULL);
|
|
||||||
|
|
||||||
vbox = gtk_vbox_new(FALSE, 0);
|
|
||||||
gtk_container_add(GTK_CONTAINER(window), vbox);
|
|
||||||
|
|
||||||
gtk_box_pack_start(GTK_BOX(vbox), getMenu(), FALSE, FALSE, 0);
|
|
||||||
gtk_box_pack_start(GTK_BOX(vbox), getToolbar(), FALSE, FALSE, 0);
|
|
||||||
|
|
||||||
gtk_window_add_accel_group(GTK_WINDOW(window), getAccels());
|
|
||||||
|
|
||||||
hPaned = gtk_hpaned_new();
|
|
||||||
gtk_box_pack_end(GTK_BOX(vbox), hPaned, TRUE, TRUE, 0);
|
|
||||||
|
|
||||||
table = gtk_table_new(2, 2, FALSE);
|
|
||||||
gtk_paned_pack1(GTK_PANED(hPaned), table, TRUE, TRUE);
|
|
||||||
|
|
||||||
drawingArea = gtk_drawing_area_new();
|
|
||||||
gtk_widget_set_gl_capability(drawingArea, glconfig, NULL, TRUE, GDK_GL_RGBA_TYPE);
|
|
||||||
gtk_widget_set_double_buffered(drawingArea, FALSE);
|
|
||||||
g_signal_connect(G_OBJECT(drawingArea), "realize", G_CALLBACK(realize), NULL);
|
|
||||||
g_signal_connect(G_OBJECT(drawingArea), "configure-event", G_CALLBACK(configureEvent), 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), "enter-notify-event", G_CALLBACK(crossingNotifyEvent), NULL);
|
|
||||||
g_signal_connect(G_OBJECT(drawingArea), "leave-notify-event", G_CALLBACK(crossingNotifyEvent), NULL);
|
|
||||||
g_signal_connect(G_OBJECT(drawingArea), "motion-notify-event", G_CALLBACK(motionNotifyEvent), NULL);
|
|
||||||
g_signal_connect(G_OBJECT(drawingArea), "scroll-event", G_CALLBACK(scrollEvent), NULL);
|
|
||||||
gtk_widget_add_events(drawingArea, GDK_SCROLL_MASK | GDK_POINTER_MOTION_MASK | GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK);
|
|
||||||
gtk_table_attach(GTK_TABLE(table), drawingArea, 0, 1, 0, 1, (GtkAttachOptions)(GTK_FILL|GTK_EXPAND|GTK_SHRINK), (GtkAttachOptions)(GTK_FILL|GTK_EXPAND|GTK_SHRINK), 0, 0);
|
|
||||||
|
|
||||||
hAdjustment = GTK_ADJUSTMENT(gtk_adjustment_new(0, 0, 0, 10, 100, 100));
|
|
||||||
hScroll = gtk_hscrollbar_new(hAdjustment);
|
|
||||||
g_signal_connect(G_OBJECT(hScroll), "value-changed", G_CALLBACK(refreshScrolling), NULL);
|
|
||||||
gtk_table_attach(GTK_TABLE(table), hScroll, 0, 1, 1, 2, (GtkAttachOptions)(GTK_FILL|GTK_EXPAND|GTK_SHRINK), (GtkAttachOptions)0, 0, 0);
|
|
||||||
|
|
||||||
vAdjustment = GTK_ADJUSTMENT(gtk_adjustment_new(0, 0, 0, 10, 100, 100));
|
|
||||||
vScroll = gtk_vscrollbar_new(vAdjustment);
|
|
||||||
g_signal_connect(G_OBJECT(vScroll), "value-changed", G_CALLBACK(refreshScrolling), NULL);
|
|
||||||
gtk_table_attach(GTK_TABLE(table), vScroll, 1, 2, 0, 1, (GtkAttachOptions)0, (GtkAttachOptions)(GTK_FILL|GTK_EXPAND|GTK_SHRINK), 0, 0);
|
|
||||||
|
|
||||||
sidebar = createSidebar();
|
|
||||||
gtk_paned_pack2(GTK_PANED(hPaned), sidebar, FALSE, TRUE);
|
|
||||||
|
|
||||||
gtk_widget_show_all(vbox);
|
|
||||||
gtk_widget_hide(sidebarAdd);
|
|
||||||
|
|
||||||
return window;
|
|
||||||
}
|
|
||||||
|
|
||||||
void updateSidebar() {
|
|
||||||
gchar *string;
|
|
||||||
|
|
||||||
switch(getEditMode()) {
|
|
||||||
case EDIT_MODE_VIEW:
|
|
||||||
case EDIT_MODE_SELECTED:
|
|
||||||
gtk_widget_hide(sidebarAdd);
|
|
||||||
gtk_widget_show(sidebarView);
|
|
||||||
|
|
||||||
if(getActiveRoom()) {
|
|
||||||
gtk_entry_set_text(GTK_ENTRY(entryName), getActiveRoom()->getName().c_str());
|
|
||||||
gtk_widget_set_sensitive(entryName, TRUE);
|
|
||||||
|
|
||||||
string = g_strdup_printf("%.2f", getActiveRoom()->area());
|
|
||||||
gtk_label_set_text(GTK_LABEL(labelArea), string);
|
|
||||||
g_free(string);
|
|
||||||
|
|
||||||
string = g_strdup_printf("%.2f", getActiveRoom()->perimeter());
|
|
||||||
gtk_label_set_text(GTK_LABEL(labelPerimeter), string);
|
|
||||||
g_free(string);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
gtk_entry_set_text(GTK_ENTRY(entryName), "");
|
|
||||||
gtk_widget_set_sensitive(entryName, FALSE);
|
|
||||||
|
|
||||||
gtk_label_set_text(GTK_LABEL(labelArea), NULL);
|
|
||||||
gtk_label_set_text(GTK_LABEL(labelPerimeter), NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
|
||||||
case EDIT_MODE_ADD:
|
|
||||||
gtk_widget_hide(sidebarView);
|
|
||||||
gtk_widget_show(sidebarAdd);
|
|
||||||
|
|
||||||
if(getActiveRoom()) {
|
|
||||||
if(getActiveRoom()->size() > 2 && isPolygonOk(getActiveRoom()))
|
|
||||||
gtk_widget_set_sensitive(buttonAddDo, TRUE);
|
|
||||||
else
|
|
||||||
gtk_widget_set_sensitive(buttonAddDo, FALSE);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void zoomIn(float factor, float x, float y) {
|
|
||||||
setScale(getScale()*factor);
|
|
||||||
updateScrollbars(x, y);
|
|
||||||
}
|
|
||||||
|
|
||||||
void zoomOut(float factor, float x, float y) {
|
|
||||||
setScale(getScale()/factor);
|
|
||||||
updateScrollbars(x, y);
|
|
||||||
}
|
|
||||||
|
|
||||||
void zoomInCentered(float factor) {
|
|
||||||
zoomIn(factor, 0.5, 0.5);
|
|
||||||
}
|
|
||||||
|
|
||||||
void zoomOutCentered(float factor) {
|
|
||||||
zoomOut(factor, 0.5, 0.5);
|
|
||||||
}
|
|
17
window.h
17
window.h
|
@ -1,17 +0,0 @@
|
||||||
#ifndef WINDOW_H_
|
|
||||||
#define WINDOW_H_
|
|
||||||
|
|
||||||
#include <gtk/gtk.h>
|
|
||||||
#include <gtk/gtkgl.h>
|
|
||||||
|
|
||||||
|
|
||||||
GtkWidget* createMainWindow(GdkGLConfig *glconfig);
|
|
||||||
|
|
||||||
void updateSidebar();
|
|
||||||
|
|
||||||
void zoomIn(float factor, float x, float y);
|
|
||||||
void zoomOut(float factor, float x, float y);
|
|
||||||
void zoomInCentered(float factor);
|
|
||||||
void zoomOutCentered(float factor);
|
|
||||||
|
|
||||||
#endif /*WINDOW_H_*/
|
|
13
zoomedit.cpp
13
zoomedit.cpp
|
@ -2,15 +2,12 @@
|
||||||
#include <gtk/gtkgl.h>
|
#include <gtk/gtkgl.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include "Level.h"
|
#include "Level.h"
|
||||||
#include "window.h"
|
#include "WindowManager.h"
|
||||||
#include "edit.h"
|
#include "edit.h"
|
||||||
|
|
||||||
|
|
||||||
int main(int argc, char *argv[]) {
|
int main(int argc, char *argv[]) {
|
||||||
GdkGLConfig *glconfig;
|
GdkGLConfig *glconfig;
|
||||||
GtkWidget *window;
|
|
||||||
|
|
||||||
setLevel(new Level());
|
|
||||||
|
|
||||||
gtk_init(&argc, &argv);
|
gtk_init(&argc, &argv);
|
||||||
gtk_gl_init(&argc, &argv);
|
gtk_gl_init(&argc, &argv);
|
||||||
|
@ -22,13 +19,9 @@ int main(int argc, char *argv[]) {
|
||||||
exit (1);
|
exit (1);
|
||||||
}
|
}
|
||||||
|
|
||||||
window = createMainWindow(glconfig);
|
WindowManager window(glconfig);
|
||||||
|
|
||||||
gtk_widget_show(window);
|
window.run();
|
||||||
|
|
||||||
gtk_main();
|
|
||||||
|
|
||||||
delete getLevel();
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Reference in a new issue