]> Shamusworld >> Repos - architektonas/blobdiff - src/mirroraction.cpp
Added Geometry class for common geometric tools used everywhere.
[architektonas] / src / mirroraction.cpp
index 61b14ac1276be53c1199b3b310db421e0ff07834..720692ed85130725ac3c2170206fa2ec251463ea 100644 (file)
@@ -12,6 +12,9 @@
 //
 
 #include "mirroraction.h"
+#include "applicationwindow.h"
+#include "container.h"
+#include "drawingview.h"
 #include "line.h"
 #include "mathconstants.h"
 #include "painter.h"
@@ -24,7 +27,7 @@ enum { FIRST_POINT, NEXT_POINT };
 
 
 MirrorAction::MirrorAction(): state(FIRST_POINT), line(NULL),
-       shiftWasPressedOnNextPoint(false)
+       shiftWasPressedOnNextPoint(false), mirror(new Container(Vector()))
 {
 }
 
@@ -57,6 +60,8 @@ MirrorAction::~MirrorAction()
 //             QString text = tr("Length: %1 in.");
 //             text = text.arg(Vector::Magnitude(p1, p2));
                painter->DrawInformativeText(text);
+
+               mirror->Draw(painter);
        }
 }
 
@@ -78,7 +83,22 @@ MirrorAction::~MirrorAction()
        if (state == FIRST_POINT)
                p1 = point;
        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);
+               }
+       }
 }