]> Shamusworld >> Repos - architektonas/blobdiff - src/mirroraction.cpp
Added Geometry class for common geometric tools used everywhere.
[architektonas] / src / mirroraction.cpp
index 998a0e1f16b5f90344e355d1423b59b0fa44c3c4..720692ed85130725ac3c2170206fa2ec251463ea 100644 (file)
@@ -13,6 +13,8 @@
 
 #include "mirroraction.h"
 #include "applicationwindow.h"
+#include "container.h"
+#include "drawingview.h"
 #include "line.h"
 #include "mathconstants.h"
 #include "painter.h"
@@ -25,7 +27,7 @@ enum { FIRST_POINT, NEXT_POINT };
 
 
 MirrorAction::MirrorAction(): state(FIRST_POINT), line(NULL),
-       shiftWasPressedOnNextPoint(false)
+       shiftWasPressedOnNextPoint(false), mirror(new Container(Vector()))
 {
 }
 
@@ -58,6 +60,8 @@ MirrorAction::~MirrorAction()
 //             QString text = tr("Length: %1 in.");
 //             text = text.arg(Vector::Magnitude(p1, p2));
                painter->DrawInformativeText(text);
+
+               mirror->Draw(painter);
        }
 }
 
@@ -81,6 +85,19 @@ MirrorAction::~MirrorAction()
        else
        {
                p2 = point;
+
+               mirror->Clear();
+               int itemsSelected = ApplicationWindow::drawing->document.ItemsSelected();
+
+               if (itemsSelected == 0)
+                       return;
+
+               for(int i=0; i<itemsSelected; i++)
+               {
+                       Object * object = ApplicationWindow::drawing->document.SelectedItem(i);
+                       Object * mirrored = object->Mirror(p1, p2);
+                       mirror->Add(mirrored);
+               }
        }
 }