Esempio n. 1
0
void LazyGraph::movePoint(CurvePtr c, int i, const vec2d &p)
{
    if (i == 0 || i == c->getSize() - 1) {
        NodePtr n = i == 0 ? c->getStart() : c->getEnd();
        nodeCache->add(n.get(), true);
    } else {
        curveCache->add(c.get(), true);
    }
    Graph::movePoint(c, i, p);
}
Esempio n. 2
0
void LazyGraph::removeCurve(CurveId id)
{
    CurvePtr c = getCurve(id);
    if (c != NULL) {
        NodePtr start = c->getStart();
        NodePtr end = c->getEnd();
        NodeId nId;
        nId.id = NULL_ID;
        c->addVertex(nId, 0);
        c->addVertex(nId, 1);
        if (start != end && start != NULL) {
            start->removeCurve(id);
            if (start->getCurveCount() == 0) {
                NodeId sid = start->getId();
                start = NULL;
                removeNode(sid);
            } else {
                nodeCache->add(start.get(), true);
            }
        }

        if (end != NULL) {
            end->removeCurve(id);
            if (end->getCurveCount() == 0) {
                NodeId eid = end->getId();
                end = NULL;
                removeNode(eid);
            } else {
                nodeCache->add(end.get(), true);
            }
        }
    }

    curveCache->changedResources.erase(c.get());
    map<CurveId, long int>::iterator k = curveOffsets.find(id);
    if (k != curveOffsets.end()) {
        curveOffsets.erase(k);
    }
}