Exemple #1
0
bool MgCommandDraw::_touchMoved2(const MgMotion* sender)
{
    setStepPoint(m_step, snapPoint(sender));
    dynshape()->shape()->update();

    return _touchMoved(sender);
}
Exemple #2
0
bool MgCommandDraw::touchMovedStep(const MgMotion* sender)
{
    if (sender->dragging()) {
        setStepPoint(m_step, snapPoint(sender));
        dynshape()->shape()->update();
    }
    return MgCommandDraw::touchMoved(sender);
}
Exemple #3
0
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);
}
Exemple #4
0
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);
}
Exemple #5
0
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);
}