bool MgCommandDraw::_touchMoved2(const MgMotion* sender) { setStepPoint(m_step, snapPoint(sender)); dynshape()->shape()->update(); return _touchMoved(sender); }
bool MgCommandDraw::touchMovedStep(const MgMotion* sender) { if (sender->dragging()) { setStepPoint(m_step, snapPoint(sender)); dynshape()->shape()->update(); } return MgCommandDraw::touchMoved(sender); }
bool MgCommandDraw::touchBeganStep(const MgMotion* sender) { if (0 == m_step) { m_step = 1; Point2d pnt(snapPoint(sender, true)); for (int i = dynshape()->shape()->getPointCount() - 1; i >= 0; i--) { dynshape()->shape()->setPoint(i, pnt); } setStepPoint(0, pnt); } else { setStepPoint(m_step, snapPoint(sender)); } dynshape()->shape()->update(); return MgCommandDraw::touchBegan(sender); }
bool MgCommandDraw::_touchEnded2(const MgMotion* sender) { Point2d pnt(snapPoint(sender)); float distmin = mgDisplayMmToModel(2.f, sender); setStepPoint(m_step, pnt); dynshape()->shape()->update(); if (pnt.distanceTo(dynshape()->shape()->getPoint(m_step - 1)) > distmin) { m_step++; if (m_step >= getMaxStep()) { _addshape(sender); _delayClear(); m_step = 0; } } return _touchEnded(sender); }
bool MgCommandDraw::touchEndedStep(const MgMotion* sender) { Point2d pnt(snapPoint(sender)); Tol tol(sender->displayMmToModel(2.f)); setStepPoint(m_step, pnt); dynshape()->shape()->update(); if (!pnt.isEqualTo(dynshape()->shape()->getPoint(m_step - 1), tol)) { m_step++; if (m_step >= getMaxStep()) { if (!dynshape()->shape()->getExtent().isEmpty(tol, false)) { addShape(sender); delayClear(); } m_step = 0; } } return MgCommandDraw::touchEnded(sender); }