/**
 * \brief Update dispatcher function.
 *
 * \param u The Update to update this object with.
 */
void UpdatableSOAdapter::update(const Update& u)
{
     switch (u.getType()) {
     case Update::eAdd:
          debug("Adding object " << u.getReference());
          addObject(*u.getObject(), u.getInitiator());
          break;
     case Update::eRemove:
          debug("Removing object " << u.getReference());
          removeObject(u.getReference(), u.getInitiator());
          break;
     case Update::eReplace:
          debug("Replacing object " << u.getReference());
          replaceObject(*u.getObject(), u.getInitiator());
          break;
     case Update::eModify:
          debug("Modifying object " << u.getReference());
          modify(*u.getObject());
          break;
     default:
          Error e;
          e << "Unknown update type " << u.getType() << " for update with target ";
          throw e;
     }
}
예제 #2
0
void CutTool::splitLine(PathObject* object, std::size_t part_index, qreal begin, qreal end) const
{
	if (!drag_forward)
		qSwap(begin, end);
	
	auto split_objects = object->asPath()->removeFromLine(part_index, begin, end);
	replaceObject(object, split_objects);
}
예제 #3
0
void CutTool::splitLine(PathObject* object, const PathCoord& split_pos) const
{
	auto split_objects = object->splitLineAt(split_pos);
	if (!split_objects.empty())
		replaceObject(object, split_objects);
}