]> Shamusworld >> Repos - architektonas/blobdiff - src/container.cpp
Whitespace changes. :-P
[architektonas] / src / container.cpp
index 9cda1fa38b95e6c10d1af0659326a69af61c5501..b3f7347c541897395a192c9b4e26f029226f11d6 100644 (file)
@@ -1,3 +1,4 @@
+//
 // container.cpp: Container object
 //
 // Part of the Architektonas Project
@@ -19,7 +20,6 @@
 #include "dimension.h"
 #include "painter.h"
 
-
 Container::Container(Vector p1, Object * p/*= NULL*/): Object(p1, p),
        isTopLevelContainer(false),
        dragging(false), draggingHandle1(false), draggingHandle2(false),
@@ -29,7 +29,6 @@ Container::Container(Vector p1, Object * p/*= NULL*/): Object(p1, p),
        state = OSInactive;
 }
 
-
 // Copy constructor
 Container::Container(const Container & copy): Object(copy.position, copy.parent)
 {
@@ -39,13 +38,11 @@ Container::Container(const Container & copy): Object(copy.position, copy.parent)
        state = OSInactive;
 }
 
-
 Container::~Container()
 {
        Clear();
 }
 
-
 // Assignment operator
 Container & Container::operator=(const Container & from)
 {
@@ -66,7 +63,6 @@ printf("Container: Copying object $%08X...\n", *i);
        return *this;
 }
 
-
 /*virtual*/ void Container::Draw(Painter * painter)
 {
        QRectF boundary;
@@ -91,13 +87,11 @@ printf("Container: Copying object $%08X...\n", *i);
        }
 }
 
-
 /*virtual*/ Vector Container::Center(void)
 {
        return position;
 }
 
-
 /*
  We need at least *three* handles for this object:
  - one for moving
@@ -111,7 +105,6 @@ I click here and drag there?"
 Also: should put the snap logic into the Object base class (as a static method)...
 */
 
-
 // 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).
 /*
@@ -201,9 +194,10 @@ class so that we can leverage that stuff here as well.
 // 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.
-/*virtual*/ void Container::PointerMoved(Vector point)
+/*virtual*/ bool Container::PointerMoved(Vector point)
 {
        std::vector<Object *>::iterator i;
+       lastObjectHovered = penultimateObjectHovered = NULL;
 
        if (!isTopLevelContainer)
        {
@@ -215,7 +209,7 @@ class so that we can leverage that stuff here as well.
                        else
                                state = OSInactive;
 
-                       return;
+                       return false;
                }
 
                // No need to do any checking if we're already selected...
@@ -253,20 +247,24 @@ class so that we can leverage that stuff here as well.
                        needUpdate = true;
                }
 
-               return;
+               return false;
        }
 
        for(std::vector<Object *>::iterator i=objects.begin(); i!=objects.end(); i++)
        {
 //             if (objects[i]->GetState() == OSSelected)
-               (*i)->PointerMoved(point);
+               if ((*i)->PointerMoved(point))
+               {
+                       penultimateObjectHovered = lastObjectHovered;
+                       lastObjectHovered = *i;
+               }
        }
 
        // Generic container doesn't need this???
 //     needUpdate = false;
+       return (lastObjectHovered == NULL ? false : true);
 }
 
-
 /*virtual*/ void Container::PointerReleased(void)
 {
        if (!isTopLevelContainer)
@@ -297,7 +295,6 @@ have to worry about keeping track of old states...
                (*i)->PointerReleased();
 }
 
-
 /*virtual*/ bool Container::NeedsUpdate(void)
 {
        // If this is *not* a top level container, then we treat it as an
@@ -318,14 +315,12 @@ have to worry about keeping track of old states...
        return false;
 }
 
-
 /*virtual*/ void Container::Add(Object * object)
 {
        objects.push_back(object);
 printf("Container: Added object (=$%X). size = %li\n", object, objects.size());
 }
 
-
 /*virtual*/ QRectF Container::Extents(void)
 {
        QRectF bounds;
@@ -336,7 +331,6 @@ printf("Container: Added object (=$%X). size = %li\n", object, objects.size());
        return bounds;
 }
 
-
 void Container::Delete(Object * objectToDelete)
 {
        std::vector<Object *>::iterator i = objects.begin();
@@ -354,7 +348,6 @@ void Container::Delete(Object * objectToDelete)
        }
 }
 
-
 void Container::DeleteSelectedItems(void)
 {
        std::vector<Object *>::iterator i = objects.begin();
@@ -371,7 +364,6 @@ void Container::DeleteSelectedItems(void)
        }
 }
 
-
 void Container::Clear(void)
 {
        std::vector<Object *>::iterator i = objects.begin();
@@ -384,21 +376,18 @@ printf("Container: Deleting object ($%X)...\n", *i);
        }
 }
 
-
 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;
 }
 
-
 int Container::ItemsSelected(void)
 {
        int selected = 0;
@@ -410,7 +399,6 @@ int Container::ItemsSelected(void)
        return selected;
 }
 
-
 Object * Container::SelectedItem(unsigned int index)
 {
        unsigned int selectedIndex = 0;
@@ -429,7 +417,6 @@ Object * Container::SelectedItem(unsigned int index)
        return NULL;
 }
 
-
 void Container::MoveContentsTo(Container * newContainer)
 {
        // Sanity check
@@ -447,7 +434,6 @@ void Container::MoveContentsTo(Container * newContainer)
        objects.clear();
 }
 
-
 void Container::CopyContentsTo(Container * newContainer)
 {
        // Sanity check
@@ -459,7 +445,6 @@ void Container::CopyContentsTo(Container * newContainer)
                newContainer->Add((*i)->Copy());
 }
 
-
 void Container::MoveSelectedContentsTo(Container * newContainer)
 {
        // Sanity check
@@ -481,7 +466,6 @@ void Container::MoveSelectedContentsTo(Container * newContainer)
        }
 }
 
-
 void Container::CopySelectedContentsTo(Container * newContainer)
 {
        // Sanity check
@@ -496,7 +480,6 @@ void Container::CopySelectedContentsTo(Container * newContainer)
        }
 }
 
-
 void Container::ResizeAllDimensions(double newSize)
 {
        for(std::vector<Object *>::iterator i=objects.begin(); i!=objects.end(); i++)
@@ -508,7 +491,6 @@ void Container::ResizeAllDimensions(double newSize)
        }
 }
 
-
 /*virtual*/ void Container::Enumerate(FILE * file)
 {
        // Only put "CONTAINER" markers if *not* the top level container
@@ -524,7 +506,6 @@ void Container::ResizeAllDimensions(double newSize)
                fprintf(file, "ENDCONTAINER\n");
 }
 
-
 /*virtual*/ Object * Container::Copy(void)
 {
 #warning "!!! This doesn't take care of attached Dimensions !!!"
@@ -542,14 +523,12 @@ same reference number.
        return c;
 }
 
-
 /*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++)
@@ -559,14 +538,12 @@ same reference number.
        }
 }
 
-
 /*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++)
@@ -576,7 +553,6 @@ same reference number.
        }
 }
 
-
 /*virtual*/ void Container::Save(void)
 {
        Object::Save();
@@ -585,7 +561,6 @@ same reference number.
                (*i)->Save();
 }
 
-
 /*virtual*/ void Container::Restore(void)
 {
        Object::Restore();
@@ -593,4 +568,3 @@ same reference number.
        for(std::vector<Object *>::iterator i=objects.begin(); i!=objects.end(); i++)
                (*i)->Restore();
 }
-