Enable square aspect if Shift modifier is pressed when we start a TwoPointsController

This commit is contained in:
David Capello 2015-08-10 17:48:40 -03:00
parent b9e362ac5c
commit 3dff25246b
6 changed files with 11 additions and 9 deletions

View File

@ -31,7 +31,7 @@ namespace app {
virtual bool isFreehand() { return false; }
virtual bool isOnePoint() { return false; }
virtual void prepareController() { }
virtual void prepareController(ui::KeyModifiers modifiers) { }
// Called when the user presses or releases a key. Returns true
// if the key is used (so a new mouse point is generated).

View File

@ -59,9 +59,9 @@ public:
// Controls clicks for tools like line
class TwoPointsController : public Controller {
public:
void prepareController() override {
m_squareAspect = false;
m_fromCenter = false;
void prepareController(ui::KeyModifiers modifiers) override {
m_squareAspect = (modifiers & ui::kKeyShiftModifier) ? true: false;
m_fromCenter = (modifiers & ui::kKeyCtrlModifier) ? true: false;
}
void pressButton(Points& points, const Point& point) override {

View File

@ -46,7 +46,8 @@ bool ToolLoopManager::isCanceled() const
return m_toolLoop->isCanceled();
}
void ToolLoopManager::prepareLoop(const Pointer& pointer)
void ToolLoopManager::prepareLoop(const Pointer& pointer,
ui::KeyModifiers modifiers)
{
// Start with no points at all
m_points.clear();
@ -54,7 +55,7 @@ void ToolLoopManager::prepareLoop(const Pointer& pointer)
// Prepare the ink
m_toolLoop->getInk()->prepareInk(m_toolLoop);
m_toolLoop->getIntertwine()->prepareIntertwine();
m_toolLoop->getController()->prepareController();
m_toolLoop->getController()->prepareController(modifiers);
m_toolLoop->getPointShape()->preparePointShape(m_toolLoop);
// Prepare preview image (the destination image will be our preview

View File

@ -69,7 +69,8 @@ namespace app {
// Should be called when the user start a tool-trace (pressing the
// left or right button for first time in the editor).
void prepareLoop(const Pointer& pointer);
void prepareLoop(const Pointer& pointer,
ui::KeyModifiers modifiers);
// Called when the loop is over.
void releaseLoop(const Pointer& pointer);

View File

@ -185,7 +185,7 @@ void BrushPreview::show(const gfx::Point& screenPos)
if (loop) {
loop->getInk()->prepareInk(loop);
loop->getIntertwine()->prepareIntertwine();
loop->getController()->prepareController();
loop->getController()->prepareController(ui::kKeyNoneModifier);
loop->getPointShape()->preparePointShape(loop);
loop->getPointShape()->transformPoint(
loop, -origBrushBounds.x, -origBrushBounds.y);

View File

@ -68,7 +68,7 @@ void DrawingState::initToolLoop(Editor* editor, MouseMessage* msg)
// first mouse pressed/point shape if drawn.
HideBrushPreview hide(editor->brushPreview());
m_toolLoopManager->prepareLoop(pointer_from_msg(msg));
m_toolLoopManager->prepareLoop(pointer_from_msg(msg), msg->keyModifiers());
m_toolLoopManager->pressButton(pointer_from_msg(msg));
editor->captureMouse();