+ case OTCircle:
+ newObject = new Circle();
+ memcpy(newObject, obj, sizeof(Circle));
+ break;
+
+ case OTEllipse:
+ newObject = new Ellipse();
+ memcpy(newObject, obj, sizeof(Ellipse));
+ break;
+
+ case OTArc:
+ newObject = new Arc();
+ memcpy(newObject, obj, sizeof(Arc));
+ break;
+
+ case OTDimension:
+ newObject = new Dimension();
+ memcpy(newObject, obj, sizeof(Dimension));
+ break;
+
+ case OTSpline:
+ newObject = new Spline();
+ memcpy(newObject, obj, sizeof(Spline));
+ break;
+
+ case OTText:
+ newObject = new Text();
+ memcpy(newObject, obj, sizeof(Text));
+ ((Text *)newObject)->s = ((Text *)obj)->s;
+ break;
+
+ case OTContainer:
+ newObject = new Container();
+ ((Container *)newObject)->p[0] = obj->p[0];
+ ((Container *)newObject)->p[1] = obj->p[1];
+ ((Container *)newObject)->layer = obj->layer;
+ ((Container *)newObject)->objects = CopyObjects(((Container *)obj)->objects);
+ break;
+ }
+
+ // Fix objectID
+ if (newObject && (((Object *)newObject)->type != OTContainer))
+ ((Object *)newObject)->id = Global::objectID++;
+
+ return (Object *)newObject;
+}
+
+void MoveSelectedObjectsTo(VPVector & dest, VPVector & from)