diff options
Diffstat (limited to 'ToolRotate.cpp')
-rw-r--r-- | ToolRotate.cpp | 96 |
1 files changed, 0 insertions, 96 deletions
diff --git a/ToolRotate.cpp b/ToolRotate.cpp deleted file mode 100644 index 342ae2e..0000000 --- a/ToolRotate.cpp +++ /dev/null @@ -1,96 +0,0 @@ -#include "ToolRotate.h" -#include <GL/gl.h> - - -ToolRotate::ToolRotate(EditManager *editManager) : Renderer(editManager), sidebar(editManager) { - this->editManager = editManager; - - pressed = false; - - image = gtk_image_new_from_stock(GTK_STOCK_MISSING_IMAGE, GTK_ICON_SIZE_BUTTON); - g_object_ref_sink(G_OBJECT(image)); -} - -ToolRotate::~ToolRotate() { - g_object_unref(G_OBJECT(image)); -} - -void ToolRotate::activate() { - pressed = false; - editManager->setSelectedObject(NULL); -} - -bool ToolRotate::buttonPress(unsigned int button, const Vertex *v) { - if(button != 1 || !editManager->getHoveredObject()) - return false; - - pressed = true; - valid = false; - vertexRot = vertex = *v; - - editManager->setSelectedObject(editManager->getHoveredObject()); - - editManager->redraw(); - sidebar.update(); - - return true; -} - -bool ToolRotate::buttonRelease(unsigned int button, const Vertex *v) { - if(button != 1) - return false; - - pressed = false; - - editManager->setSelectedObject(NULL); - - editManager->redraw(); - sidebar.update(); - - return true; -} - -bool ToolRotate::motion(const Vertex *v, float scale) { - if(!pressed) - return false; - - if(!v) - return false; - - vertex = *v; - - float a = atan2((vertex-vertexRot).getY(), (vertex-vertexRot).getX()); - - if(vertexRot.distanceSq(vertex) > (10*10)/(scale*scale)) { - if(valid) - editManager->getSelectedObject()->rotate(vertexRot, a-angle); - - else - valid = true; - } - else - valid = false; - - angle = a; - - return false; -} - -void ToolRotate::render(const Level &level, const Rectangle &rect, float scale) { - Renderer::render(level, rect, scale); - - if(pressed && valid) { - glLineWidth(1.0f); - glColor4f(1.0f, 1.0f, 1.0f, 0.7f); - drawCircleDotted(vertexRot, vertexRot.distance(vertex), 64, 16, angle); - - glLineWidth(2.0f); - - glBegin(GL_LINES); - - glVertex2f(vertexRot.getX(), vertexRot.getY()); - glVertex2f(vertex.getX(), vertex.getY()); - - glEnd(); - } -} |