Ejemplo n.º 1
0
bool MgCmdDrawSplines::canAddPoint(const MgMotion* sender, bool ended)
{
    if (!m_freehand && !ended)
        return false;
    
    if (m_step > 0) {
        MgBaseLines* lines = (MgBaseLines*)dynshape()->shape();
        float dist = sender->pointM.distanceTo(lines->endPoint());
        if (dist < sender->displayMmToModel(ended ? 0.3f : 0.5f))
            return false;
    }
    
    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;
}