]> Shamusworld >> Repos - architektonas/blobdiff - src/container.cpp
Mirror tool now works successfully for all object types. :-D
[architektonas] / src / container.cpp
index 77d1771416d47ae112be9c1e74fd5d663a408200..e8a66e4d3ba040a178c7eadefc6a5c855adc6aa2 100644 (file)
@@ -22,7 +22,8 @@
 
 Container::Container(Vector p1, Object * p/*= NULL*/): Object(p1, p),
        isTopLevelContainer(false),
-       dragging(false), draggingHandle1(false), draggingHandle2(false)//, needUpdate(false)
+       dragging(false), draggingHandle1(false), draggingHandle2(false),
+       hit(false)//, needUpdate(false)
 {
        type = OTContainer;
        state = OSInactive;
@@ -475,6 +476,21 @@ void Container::MoveSelectedContentsTo(Container * newContainer)
 }
 
 
+void Container::CopySelectedContentsTo(Container * newContainer)
+{
+       // Sanity check
+       if (newContainer == NULL)
+               return;
+
+       // Shuffle the contents of this container to the new one
+       for(std::vector<Object *>::iterator i=objects.begin(); i!=objects.end(); i++)
+       {
+               if ((*i)->state == OSSelected)
+                       newContainer->Add((*i)->Copy());
+       }
+}
+
+
 void Container::ResizeAllDimensions(double newSize)
 {
        for(std::vector<Object *>::iterator i=objects.begin(); i!=objects.end(); i++)
@@ -520,3 +536,28 @@ same reference number.
        return c;
 }
 
+
+/*virtual*/ void Container::Mirror(Point p1, Point p2)
+{
+       for(std::vector<Object *>::iterator i=objects.begin(); i!=objects.end(); i++)
+               (*i)->Mirror(p1, p2);
+}
+
+
+/*virtual*/ void Container::Save(void)
+{
+       Object::Save();
+
+       for(std::vector<Object *>::iterator i=objects.begin(); i!=objects.end(); i++)
+               (*i)->Save();
+}
+
+
+/*virtual*/ void Container::Restore(void)
+{
+       Object::Restore();
+
+       for(std::vector<Object *>::iterator i=objects.begin(); i!=objects.end(); i++)
+               (*i)->Restore();
+}
+