Ejemplo n.º 1
0
bool MgCmdDrawLines::doubleClick(const MgMotion* sender)
{
    MgBaseLines* lines = (MgBaseLines*)dynshape()->shape();
    Point2d pnt(_lastClicked ? lines->getPoint(m_index) : sender->pointM);
    
    if (m_step > (lines->isClosed() ? 2 : 1)) {
        if (lines->getPointCount() > (lines->isClosed() ? 2 : 1)
               && sender->displayMmToModel(5.f) > pnt.distanceTo(lines->getPoint(m_index))) {
            lines->removePoint(m_index--);
        }
        addShape(sender);
        m_step = 0;
    }
    return true;
}
Ejemplo n.º 2
0
bool MgCmdDrawLines::checkClosed(const MgMotion* sender, const Point2d& pnt)
{
    bool closed = false;
    MgBaseLines* lines = (MgBaseLines*)dynshape()->shape();
    
    if ((m_index == 0 || m_index == m_step) && needCheckClosed()) {
        float distmin = sender->displayMmToModel(2.f);
        closed = m_step > 2 && pnt.distanceTo(m_index == 0 ? lines->endPoint()
                                              : lines->getPoint(0)) < distmin;
        lines->setClosed(closed);
    }
    
    return closed;
}