summaryrefslogtreecommitdiffstats
path: root/interactioncanvas.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'interactioncanvas.cpp')
-rw-r--r--interactioncanvas.cpp94
1 files changed, 81 insertions, 13 deletions
diff --git a/interactioncanvas.cpp b/interactioncanvas.cpp
index 7bd8de8..1c4e54f 100644
--- a/interactioncanvas.cpp
+++ b/interactioncanvas.cpp
@@ -1,6 +1,7 @@
#include "interactioncanvas.h"
-InteractionCanvas::InteractionCanvas()
+InteractionCanvas::InteractionCanvas(QWidget *parent)
+ :QLabel(parent)
{
setFocusPolicy(Qt::StrongFocus);
setMouseTracking(true);
@@ -10,7 +11,65 @@ InteractionCanvas::InteractionCanvas()
InteractionCanvas::~InteractionCanvas()
{
+ for(int i = 0; i < m_Lines.size(); i++)
+ {
+ delete m_Lines[i];
+ m_Lines.removeAt(i);
+ }
+ if(m_NewLine)
+ {
+ delete m_NewLine;
+ m_NewLine = NULL;
+ }
+ if(m_SelectedLine)
+ {
+ delete m_SelectedLine;
+ m_SelectedLine = NULL;
+ }
+}
+void InteractionCanvas::addLine()
+{
+ Line *tmpLine = new Line();
+ tmpLine->setP1(QPoint(10, 50));
+ tmpLine->setP2(QPoint(30, 50));
+ addNewLine(tmpLine);
+ m_NewLine = NULL;
+ m_Lines.append(tmpLine);
+ changeSelectedLine(tmpLine);
+}
+
+void InteractionCanvas::addRectangle()
+{
+ Line *tmpLine = new Rectangle();
+ tmpLine->setP1(QPoint(10, 50));
+ tmpLine->setP2(QPoint(30, 70));
+ addNewLine(tmpLine);
+ m_NewLine = NULL;
+ m_Lines.append(tmpLine);
+ changeSelectedLine(tmpLine);
+}
+
+void InteractionCanvas::addEllipse()
+{
+ Line *tmpLine = new Ellipse();
+ tmpLine->setP1(QPoint(10, 50));
+ tmpLine->setP2(QPoint(30, 70));
+ addNewLine(tmpLine);
+ m_NewLine = NULL;
+ m_Lines.append(tmpLine);
+ changeSelectedLine(tmpLine);
+}
+
+void InteractionCanvas::addPolygon()
+{
+ Line *tmpLine = new Polygon();
+ tmpLine->setP1(QPoint(10, 50));
+ tmpLine->setP2(QPoint(30, 70));
+ addNewLine(tmpLine);
+ m_NewLine = NULL;
+ m_Lines.append(tmpLine);
+ changeSelectedLine(tmpLine);
}
void InteractionCanvas::mouseMoveEvent(QMouseEvent *mouseEvent)
@@ -42,15 +101,9 @@ void InteractionCanvas::mousePressEvent(QMouseEvent *mouseEvent)
{
if(!m_SelectedLine)
{
- if (m_NewLine)
- {
- delete m_NewLine;
- m_NewLine = NULL;
- }
-
- m_NewLine = new Line();
m_MousePressPoint = mouseEvent->pos();
m_LastMousePosition = m_MousePressPoint;
+ addNewLine(new Line);
m_NewLine->setP1(m_MousePressPoint);
m_NewLine->setP2(m_LastMousePosition);
}
@@ -61,9 +114,9 @@ void InteractionCanvas::mousePressEvent(QMouseEvent *mouseEvent)
changeSelectedLine(NULL);
for(int i = 0; i < m_Lines.size() && !m_SelectedLine; i++)
{
- if(m_Lines[i].isHit(mouseEvent->pos()))
+ if(m_Lines[i]->isHit(mouseEvent->pos()))
{
- changeSelectedLine(&(m_Lines[i]));
+ changeSelectedLine(m_Lines[i]);
}
}
}
@@ -81,7 +134,7 @@ void InteractionCanvas::mouseReleaseEvent(QMouseEvent *mouseEvent)
m_MouseReleasePoint = mouseEvent->pos();
m_NewLine->setP2(m_MouseReleasePoint);
m_NewLine->setSelected(false);
- m_Lines.append(*m_NewLine);
+ m_Lines.append(m_NewLine);
m_NewLine = NULL;
}
}
@@ -96,6 +149,7 @@ void InteractionCanvas::keyPressEvent(QKeyEvent *keyEvent)
if(!m_Lines.isEmpty() && keyEvent->key() == Qt::Key_Z && keyEvent->modifiers() == Qt::ControlModifier)
{
+ delete m_Lines.last();
m_Lines.removeLast();
update();
}
@@ -126,6 +180,20 @@ void InteractionCanvas::changeSelectedLine(Line *newSelectedLine)
}
}
+void InteractionCanvas::addNewLine(Line *newLine)
+{
+ if (m_NewLine)
+ {
+ delete m_NewLine;
+ m_NewLine = NULL;
+ }
+
+ if(newLine)
+ {
+ m_NewLine = new Line();
+ }
+}
+
void InteractionCanvas::paintEvent(QPaintEvent *paintEvent)
{
// Setup the Painters
@@ -136,8 +204,8 @@ void InteractionCanvas::paintEvent(QPaintEvent *paintEvent)
m_NewLine->draw(&painter);
}
- foreach (Line line, m_Lines)
+ foreach (Line *line, m_Lines)
{
- line.draw(&painter);
+ line->draw(&painter);
}
}