#include "ToolRotate.h" ToolRotate::ToolRotate(EditManager *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->highlightHoveredObject(); editManager->setSelectedObject(NULL); } bool ToolRotate::buttonPress(unsigned int button) { if(button != 1 || !editManager->getHoveredObject()) return false; pressed = true; Vertex v = *editManager->getHoveredVertex() - editManager->getHoveredObject()->getCenter(); angle = atan2(v.getY(), v.getX()); editManager->setSelectedObject(editManager->getHoveredObject()); editManager->redraw(); sidebar.update(); return true; } bool ToolRotate::buttonRelease(unsigned int button) { if(button != 1) return false; pressed = false; editManager->setSelectedObject(NULL); editManager->redraw(); sidebar.update(); return true; } bool ToolRotate::motion() { if(!pressed) { editManager->highlightHoveredObject(); return true; } if(!editManager->getHoveredVertex()) return false; Vertex v = *editManager->getHoveredVertex() - editManager->getSelectedObject()->getCenter(); float a = atan2(v.getY(), v.getX()); editManager->getSelectedObject()->rotate(a-angle); angle = a; return false; }