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); }
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); } }