]> Shamusworld >> Repos - architektonas/blobdiff - src/utils.cpp
Further progress on Polylines: Polylines can be selected and moved.
[architektonas] / src / utils.cpp
index c038f3670ee25598662841a19669e80956e5c9ac..cd05ba735e95f30ac96aacf56f205e6548840a79 100644 (file)
@@ -73,6 +73,11 @@ Object * CopyObject(Object * obj)
                newObject = new Dimension();
                memcpy(newObject, obj, sizeof(Dimension));
                break;
+       case OTPolyline:
+               newObject = new Polyline();
+               memcpy(newObject, obj, sizeof(Polyline));
+               ((Polyline *)newObject)->points = ((Polyline *)obj)->points;
+               break;
        case OTSpline:
                newObject = new Spline();
                memcpy(newObject, obj, sizeof(Spline));
@@ -137,6 +142,12 @@ Object * CopyObject2(Object * obj)
                memcpy(newObject, obj, sizeof(Dimension));
                break;
 
+       case OTPolyline:
+               newObject = new Polyline();
+               memcpy(newObject, obj, sizeof(Polyline));
+               ((Polyline *)newObject)->points = ((Polyline *)obj)->points;
+               break;
+
        case OTSpline:
                newObject = new Spline();
                memcpy(newObject, obj, sizeof(Spline));
@@ -399,6 +410,8 @@ void TranslateObject(Object * obj, Point delta)
                for(VPVectorIter i=c->objects.begin(); i!=c->objects.end(); i++)
                        TranslateObject((Object *)*i, delta);
        }
+       else if (obj->type == OTPolyline)
+               ((Polyline *)obj)->Translate(delta);
 
        obj->p[0] += delta;
        obj->p[1] += delta;
@@ -482,6 +495,10 @@ void TranslateObjects(VPVector & v, Point delta)
                        Container * c = (Container *)obj;
                        TranslateObjects(c->objects, delta);
                }
+               else if (obj->type == OTPolyline)
+               {
+                       ((Polyline *)obj)->Translate(delta);
+               }
        }
 }