Container::Container(Vector p1, Object * p/*= NULL*/): Object(p1, p),
isTopLevelContainer(false),
dragging(false), draggingHandle1(false), draggingHandle2(false),
Container::Container(Vector p1, Object * p/*= NULL*/): Object(p1, p),
isTopLevelContainer(false),
dragging(false), draggingHandle1(false), draggingHandle2(false),
// Need to add checking here for clicking on a member of a group (Container),
// and checking for if it's a top level container (the DrawingView's document).
/*
// Need to add checking here for clicking on a member of a group (Container),
// and checking for if it's a top level container (the DrawingView's document).
/*
- // NOTE that this deletes the object on mouse down instead of mouse up. Have to
- // check to see how it feels to do it that way...
+ // NOTE that this deletes the object on mouse down instead of mouse up.
+ // Have to check to see how it feels to do it that way...
+ // N.B.: This only works because the toolAction is not set, &
+ // Object::ignoreClicks isn't set either...
for(std::vector<Object *>::iterator i=objects.begin(); i!=objects.end(); i++)
{
if ((*i)->Collided(point))
for(std::vector<Object *>::iterator i=objects.begin(); i!=objects.end(); i++)
{
if ((*i)->Collided(point))
// into parts and keep subdividing until an acceptable number of objects lie within
// the slice. This way, the GUI will still be responsive and *not* have to test
// every object for collision.
// into parts and keep subdividing until an acceptable number of objects lie within
// the slice. This way, the GUI will still be responsive and *not* have to test
// every object for collision.
}
for(std::vector<Object *>::iterator i=objects.begin(); i!=objects.end(); i++)
{
// if (objects[i]->GetState() == OSSelected)
}
for(std::vector<Object *>::iterator i=objects.begin(); i!=objects.end(); i++)
{
// if (objects[i]->GetState() == OSSelected)
/*virtual*/ bool Container::NeedsUpdate(void)
{
// If this is *not* a top level container, then we treat it as an
/*virtual*/ bool Container::NeedsUpdate(void)
{
// If this is *not* a top level container, then we treat it as an
/*virtual*/ void Container::Add(Object * object)
{
objects.push_back(object);
printf("Container: Added object (=$%X). size = %li\n", object, objects.size());
}
/*virtual*/ void Container::Add(Object * object)
{
objects.push_back(object);
printf("Container: Added object (=$%X). size = %li\n", object, objects.size());
}
void Container::SelectAll(void)
{
for(unsigned int i=0; i<objects.size(); i++)
objects[i]->state = OSSelected;
}
void Container::SelectAll(void)
{
for(unsigned int i=0; i<objects.size(); i++)
objects[i]->state = OSSelected;
}
void Container::DeselectAll(void)
{
for(unsigned int i=0; i<objects.size(); i++)
objects[i]->state = OSInactive;
}
void Container::DeselectAll(void)
{
for(unsigned int i=0; i<objects.size(); i++)
objects[i]->state = OSInactive;
}
void Container::ResizeAllDimensions(double newSize)
{
for(std::vector<Object *>::iterator i=objects.begin(); i!=objects.end(); i++)
void Container::ResizeAllDimensions(double newSize)
{
for(std::vector<Object *>::iterator i=objects.begin(); i!=objects.end(); i++)
/*virtual*/ void Container::Enumerate(FILE * file)
{
// Only put "CONTAINER" markers if *not* the top level container
/*virtual*/ void Container::Enumerate(FILE * file)
{
// Only put "CONTAINER" markers if *not* the top level container
/*virtual*/ Object * Container::Copy(void)
{
#warning "!!! This doesn't take care of attached Dimensions !!!"
/*virtual*/ Object * Container::Copy(void)
{
#warning "!!! This doesn't take care of attached Dimensions !!!"
/*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::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++)
/*virtual*/ void Container::RotateSelected(Point point, double angle)
{
for(std::vector<Object *>::iterator i=objects.begin(); i!=objects.end(); i++)
/*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::Mirror(Point p1, Point p2)
{
for(std::vector<Object *>::iterator i=objects.begin(); i!=objects.end(); i++)
(*i)->Mirror(p1, p2);
}
/*virtual*/ void Container::MirrorSelected(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++)