X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Futils.cpp;h=cd05ba735e95f30ac96aacf56f205e6548840a79;hb=10cf4c797bed05831e976068b7504908279dc997;hp=7428fbe6a5bdb4f200e8d45a1014ffc8b8d22bef;hpb=eb39f1bb5e6518c5dc4f4dbd3c88912a97192e95;p=architektonas diff --git a/src/utils.cpp b/src/utils.cpp index 7428fbe..cd05ba7 100644 --- a/src/utils.cpp +++ b/src/utils.cpp @@ -1,3 +1,4 @@ +// // utils.cpp: Stuff that's useful to have kicking around, in one spot // // Part of the Architektonas Project @@ -72,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)); @@ -136,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)); @@ -315,6 +327,25 @@ void RemoveSelectedObjects(VPVector & v) } } +// +// This is used to remove hovered objects from one container in order to delete +// them from the same container. +// +void RemoveHoveredObjects(VPVector & v) +{ + VPVectorIter i = v.begin(); + + while (i != v.end()) + { + Object * obj = (Object *)(*i); + + if (obj->hovered) + v.erase(i); + else + i++; + } +} + void SavePointsFrom(VPVector & v, std::vector & save) { save.clear(); @@ -379,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; @@ -462,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); + } } }