return *this;
Clear();
-
- // Small problem with this approach: if the copied object goes out of scope,
- // all of the objects we copied in here will be deleted. D'oh!
- // For this COPY constructor to be meaningful, we have to actually COPY the
- // objects in this Container, not just MOVE a copy of the POINTER! D-:
std::vector<Object *>::const_iterator i;
-// for(uint i=0; i<from.objects.size(); i++)
for(i=from.objects.begin(); i!=from.objects.end(); i++)
{
-// Object * object = from.objects[i];
+printf("Container: Copying object $%08X...\n", *i);
Object * object = (*i)->Copy();
-
- // Need to actually COPY the object here, not copy the pointer only!!
- // (which we do now, above :-P)
-
objects.push_back(object);
}
return;
// Shuffle the contents of this container to the new one
-// for(unsigned int i=0; i<objects.size(); i++)
for(std::vector<Object *>::iterator i=objects.begin(); i!=objects.end(); i++)
{
newContainer->Add(*i);
}
+void Container::CopyContentsTo(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++)
+ newContainer->Add((*i)->Copy());
+}
+
+
void Container::MoveSelectedContentsTo(Container * newContainer)
{
// Sanity check
if (newContainer == NULL)
return;
- // Shuffle the contents of this container to the new one
+ // Copy 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)
}
+/*virtual*/ void Container::Rotate(Point point, double angle)
+{
+ for(std::vector<Object *>::iterator i=objects.begin(); i!=objects.end(); i++)
+ (*i)->Rotate(point, angle);
+}
+
+
+/*virtual*/ void Container::RotateSelected(Point point, double angle)
+{
+ for(std::vector<Object *>::iterator i=objects.begin(); i!=objects.end(); i++)
+ {
+ if ((*i)->state == OSSelected)
+ (*i)->Rotate(point, angle);
+ }
+}
+
+
/*virtual*/ void Container::Mirror(Point p1, Point p2)
{
for(std::vector<Object *>::iterator i=objects.begin(); i!=objects.end(); i++)
}
+/*virtual*/ void Container::MirrorSelected(Point p1, Point p2)
+{
+ for(std::vector<Object *>::iterator i=objects.begin(); i!=objects.end(); i++)
+ {
+ if ((*i)->state == OSSelected)
+ (*i)->Mirror(p1, p2);
+ }
+}
+
+
/*virtual*/ void Container::Save(void)
{
Object::Save();