summaryrefslogtreecommitdiffstats
path: root/Project
diff options
context:
space:
mode:
Diffstat (limited to 'Project')
-rw-r--r--Project/Bus.cpp18
-rw-r--r--Project/Bus.h1
-rw-r--r--Project/Element.h1
-rw-r--r--Project/Project.mk7
-rw-r--r--Project/Release/Bus.cpp.obin14297 -> 14533 bytes
-rw-r--r--Project/Release/Element.cpp.obin4898 -> 4924 bytes
-rw-r--r--Project/Release/PSP-UFU.exebin3242405 -> 3242477 bytes
-rw-r--r--Project/Release/Workspace.cpp.obin88864 -> 88804 bytes
-rw-r--r--Project/Workspace.cpp332
9 files changed, 185 insertions, 174 deletions
diff --git a/Project/Bus.cpp b/Project/Bus.cpp
index 064f481..923d947 100644
--- a/Project/Bus.cpp
+++ b/Project/Bus.cpp
@@ -74,10 +74,15 @@ bool Bus::Contains(wxPoint2DDouble position) const
return m_rect.Contains(ptR);
}
+bool Bus::Intersects(wxRect2DDouble rect) const
+{
+ return rect.Intersects(m_rect);
+}
+
bool Bus::PickboxContains(wxPoint2DDouble position)
{
- m_activePickboxID = ID_PB_NONE;
-
+ m_activePickboxID = ID_PB_NONE;
+
wxPoint2DDouble ptR = RotateAtPosition(position, -m_angle);
wxPoint2DDouble center(m_position.m_x + m_width / 2.0, m_position.m_y);
@@ -90,12 +95,11 @@ bool Bus::PickboxContains(wxPoint2DDouble position)
m_activePickboxID = ID_PB_RIGHT;
return true;
}
- if(rectLeft.Contains(ptR))
- {
+ if(rectLeft.Contains(ptR)) {
m_activePickboxID = ID_PB_LEFT;
return true;
}
-
+
return false;
}
@@ -118,8 +122,8 @@ wxCursor Bus::GetBestPickboxCursor() const
void Bus::MovePickbox(wxPoint2DDouble position)
{
- if(m_activePickboxID == ID_PB_NONE) return;
-
+ if(m_activePickboxID == ID_PB_NONE) return;
+
wxPoint2DDouble ptR = RotateAtPosition(position, -m_angle);
double dx = 0.0;
diff --git a/Project/Bus.h b/Project/Bus.h
index 095a72d..ccfc9d3 100644
--- a/Project/Bus.h
+++ b/Project/Bus.h
@@ -10,6 +10,7 @@ class Bus : public Element
Bus(wxPoint2DDouble position);
~Bus();
virtual bool Contains(wxPoint2DDouble position) const;
+ virtual bool Intersects(wxRect2DDouble rect) const;
virtual void Draw(wxPoint2DDouble translation, double scale) const;
virtual void Rotate();
virtual wxCursor GetBestPickboxCursor() const;
diff --git a/Project/Element.h b/Project/Element.h
index 1196f64..3080703 100644
--- a/Project/Element.h
+++ b/Project/Element.h
@@ -44,6 +44,7 @@ class Element
virtual void Draw(wxPoint2DDouble translation, double scale) const = 0;
virtual void Rotate() = 0;
virtual bool Contains(wxPoint2DDouble position) const = 0;
+ virtual bool Intersects(wxRect2DDouble rect) const = 0;
virtual bool PickboxContains(wxPoint2DDouble position) = 0;
virtual void MovePickbox(wxPoint2DDouble position) = 0;
virtual wxCursor GetBestPickboxCursor() const = 0;
diff --git a/Project/Project.mk b/Project/Project.mk
index 1ef9bb1..0046731 100644
--- a/Project/Project.mk
+++ b/Project/Project.mk
@@ -13,8 +13,8 @@ CurrentFileName :=
CurrentFilePath :=
CurrentFileFullPath :=
User :=Thales
-Date :=05/08/2016
-CodeLitePath :="C:/Program Files/CodeLite"
+Date :=07/08/2016
+CodeLitePath :="C:/Program Files (x86)/CodeLite"
LinkerName :=C:/TDM-GCC-64/bin/g++.exe
SharedObjectLinkerName :=C:/TDM-GCC-64/bin/g++.exe -shared -fPIC
ObjectSuffix :=.o
@@ -61,7 +61,8 @@ AS := C:/TDM-GCC-64/bin/as.exe
##
## User defined environment variables
##
-CodeLiteDir:=C:\Program Files\CodeLite
+CodeLiteDir:=C:\Program Files (x86)\CodeLite
+UNIT_TEST_PP_SRC_DIR:=C:\UnitTest++-1.3
WXWIN:=C:\wxWidgets-3.1.0
WXCFG:=gcc_dll\mswu
Objects0=$(IntermediateDirectory)/main.cpp$(ObjectSuffix) $(IntermediateDirectory)/win_resources.rc$(ObjectSuffix) $(IntermediateDirectory)/Element.cpp$(ObjectSuffix) $(IntermediateDirectory)/Bus.cpp$(ObjectSuffix) $(IntermediateDirectory)/ArtMetro.cpp$(ObjectSuffix) $(IntermediateDirectory)/MainFrame.cpp$(ObjectSuffix) $(IntermediateDirectory)/Workspace.cpp$(ObjectSuffix) $(IntermediateDirectory)/MainFrameBitmaps.cpp$(ObjectSuffix) $(IntermediateDirectory)/WorkspaceBitmaps.cpp$(ObjectSuffix) $(IntermediateDirectory)/MainFrameBase.cpp$(ObjectSuffix) \
diff --git a/Project/Release/Bus.cpp.o b/Project/Release/Bus.cpp.o
index 8f5a654..89adaf8 100644
--- a/Project/Release/Bus.cpp.o
+++ b/Project/Release/Bus.cpp.o
Binary files differ
diff --git a/Project/Release/Element.cpp.o b/Project/Release/Element.cpp.o
index 3f07424..80f7c31 100644
--- a/Project/Release/Element.cpp.o
+++ b/Project/Release/Element.cpp.o
Binary files differ
diff --git a/Project/Release/PSP-UFU.exe b/Project/Release/PSP-UFU.exe
index 7b86997..894231a 100644
--- a/Project/Release/PSP-UFU.exe
+++ b/Project/Release/PSP-UFU.exe
Binary files differ
diff --git a/Project/Release/Workspace.cpp.o b/Project/Release/Workspace.cpp.o
index e9d4782..8a65ece 100644
--- a/Project/Release/Workspace.cpp.o
+++ b/Project/Release/Workspace.cpp.o
Binary files differ
diff --git a/Project/Workspace.cpp b/Project/Workspace.cpp
index db56eb7..9425d4a 100644
--- a/Project/Workspace.cpp
+++ b/Project/Workspace.cpp
@@ -71,7 +71,7 @@ void Workspace::OnPaint(wxPaintEvent& event)
SetViewport();
// Set GLCanvas scale and translation.
- glScaled(m_camera->GetScale(), m_camera->GetScale(), 0.0); // Scale
+ glScaled(m_camera->GetScale(), m_camera->GetScale(), 0.0); // Scale
glTranslated(m_camera->GetTranslation().m_x, m_camera->GetTranslation().m_y, 0.0); // Translation
// Draw
@@ -179,7 +179,7 @@ void Workspace::OnLeftClickUp(wxMouseEvent& event)
Element* element = *it;
if(m_mode == MODE_SELECTION_RECT) {
- if(m_selectionRect.Intersects(element->GetRect())) {
+ if(element->Intersects(m_selectionRect)) {
element->SetSelected();
}
else
@@ -199,6 +199,10 @@ void Workspace::OnLeftClickUp(wxMouseEvent& event)
if(element->PickboxContains(m_camera->ScreenToWorld(event.GetPosition()))) {
foundPickbox = true;
}
+ else
+ {
+ element->ShowPickbox(false);
+ }
}
it++;
@@ -217,112 +221,112 @@ void Workspace::OnMouseMotion(wxMouseEvent& event)
{
switch(m_mode)
{
- case MODE_INSERT:
- {
- std::vector<Element*>::iterator it = m_elementList.end() - 1;
- Element* element = *it;
- element->SetPosition(m_camera->ScreenToWorld(event.GetPosition()));
- Redraw();
- }
- break;
-
- case MODE_DRAG:
- {
- m_camera->SetTranslation(event.GetPosition());
- Redraw();
- }
- break;
-
- case MODE_EDIT:
- {
- bool foundPickbox = false;
- bool redraw = false;
- std::vector<Element*>::iterator it = m_elementList.begin();
- while(it != m_elementList.end()) {
- Element* element = *it;
- if(element->IsSelected()) {
- if(element->Contains(m_camera->ScreenToWorld(event.GetPosition()))) {
- element->ShowPickbox();
- redraw = true;
-
- if(element->PickboxContains(m_camera->ScreenToWorld(event.GetPosition()))) {
- foundPickbox = true;
- SetCursor(element->GetBestPickboxCursor());
- }
- else if(!foundPickbox)
- {
- SetCursor(wxCURSOR_ARROW);
- }
- }
- else if(!foundPickbox)
- {
- if(element->IsPickboxShown()) redraw = true;
-
- element->ShowPickbox(false);
- SetCursor(wxCURSOR_ARROW);
- }
- }
- it++;
- }
- if(redraw) Redraw();
- }
- break;
-
- case MODE_MOVE_PICKBOX:
- {
- std::vector<Element*>::iterator it = m_elementList.begin();
- while(it != m_elementList.end()) {
- Element* element = *it;
- if(element->IsSelected()) {
- element->MovePickbox(m_camera->ScreenToWorld(event.GetPosition()));
- Redraw();
- }
- it++;
- }
- }
- break;
-
- case MODE_MOVE_ELEMENT:
- {
- std::vector<Element*>::iterator it = m_elementList.begin();
- while(it != m_elementList.end()) {
- Element* element = *it;
- if(element->IsSelected()) {
- element->Move(m_camera->ScreenToWorld(event.GetPosition()));
- Redraw();
- }
- it++;
- }
- }
- break;
-
- case MODE_SELECTION_RECT:
- {
- wxPoint2DDouble currentPos = m_camera->ScreenToWorld(event.GetPosition());
- double x, y, w, h;
- if(currentPos.m_x < m_startSelRect.m_x) {
- x = currentPos.m_x;
- w = m_startSelRect.m_x - currentPos.m_x;
- }
- else
- {
- x = m_startSelRect.m_x;
- w = currentPos.m_x - m_startSelRect.m_x;
- }
- if(currentPos.m_y < m_startSelRect.m_y) {
- y = currentPos.m_y;
- h = m_startSelRect.m_y - currentPos.m_y;
- }
- else
- {
- y = m_startSelRect.m_y;
- h = currentPos.m_y - m_startSelRect.m_y;
- }
-
- m_selectionRect = wxRect2DDouble(x, y, w, h);
- Redraw();
- }
- break;
+ case MODE_INSERT:
+ {
+ std::vector<Element*>::iterator it = m_elementList.end() - 1;
+ Element* element = *it;
+ element->SetPosition(m_camera->ScreenToWorld(event.GetPosition()));
+ Redraw();
+ }
+ break;
+
+ case MODE_DRAG:
+ {
+ m_camera->SetTranslation(event.GetPosition());
+ Redraw();
+ }
+ break;
+
+ case MODE_EDIT:
+ {
+ bool foundPickbox = false;
+ bool redraw = false;
+ std::vector<Element*>::iterator it = m_elementList.begin();
+ while(it != m_elementList.end()) {
+ Element* element = *it;
+ if(element->IsSelected()) {
+ if(element->Contains(m_camera->ScreenToWorld(event.GetPosition()))) {
+ element->ShowPickbox();
+ redraw = true;
+
+ if(element->PickboxContains(m_camera->ScreenToWorld(event.GetPosition()))) {
+ foundPickbox = true;
+ SetCursor(element->GetBestPickboxCursor());
+ }
+ else if(!foundPickbox)
+ {
+ SetCursor(wxCURSOR_ARROW);
+ }
+ }
+ else if(!foundPickbox)
+ {
+ if(element->IsPickboxShown()) redraw = true;
+
+ element->ShowPickbox(false);
+ SetCursor(wxCURSOR_ARROW);
+ }
+ }
+ it++;
+ }
+ if(redraw) Redraw();
+ }
+ break;
+
+ case MODE_MOVE_PICKBOX:
+ {
+ std::vector<Element*>::iterator it = m_elementList.begin();
+ while(it != m_elementList.end()) {
+ Element* element = *it;
+ if(element->IsSelected()) {
+ element->MovePickbox(m_camera->ScreenToWorld(event.GetPosition()));
+ Redraw();
+ }
+ it++;
+ }
+ }
+ break;
+
+ case MODE_MOVE_ELEMENT:
+ {
+ std::vector<Element*>::iterator it = m_elementList.begin();
+ while(it != m_elementList.end()) {
+ Element* element = *it;
+ if(element->IsSelected()) {
+ element->Move(m_camera->ScreenToWorld(event.GetPosition()));
+ Redraw();
+ }
+ it++;
+ }
+ }
+ break;
+
+ case MODE_SELECTION_RECT:
+ {
+ wxPoint2DDouble currentPos = m_camera->ScreenToWorld(event.GetPosition());
+ double x, y, w, h;
+ if(currentPos.m_x < m_startSelRect.m_x) {
+ x = currentPos.m_x;
+ w = m_startSelRect.m_x - currentPos.m_x;
+ }
+ else
+ {
+ x = m_startSelRect.m_x;
+ w = currentPos.m_x - m_startSelRect.m_x;
+ }
+ if(currentPos.m_y < m_startSelRect.m_y) {
+ y = currentPos.m_y;
+ h = m_startSelRect.m_y - currentPos.m_y;
+ }
+ else
+ {
+ y = m_startSelRect.m_y;
+ h = currentPos.m_y - m_startSelRect.m_y;
+ }
+
+ m_selectionRect = wxRect2DDouble(x, y, w, h);
+ Redraw();
+ }
+ break;
}
m_camera->UpdateMousePosition(event.GetPosition());
UpdateStatusBar();
@@ -359,41 +363,41 @@ void Workspace::OnKeyDown(wxKeyEvent& event)
if(key != WXK_NONE) {
switch(key)
{
- case WXK_ESCAPE: // Cancel operations.
- {
- if(m_mode == MODE_INSERT) {
- m_elementList.pop_back(); // Removes the last element being inserted.
- m_mode = MODE_EDIT;
- Redraw();
- }
- }
- break;
- case 'R': // Rotate the selected elements.
- {
- std::vector<Element*>::iterator it = m_elementList.begin();
- while(it != m_elementList.end()) {
- Element* element = *it;
- if(element->IsSelected()) {
- element->Rotate();
- }
- it++;
- }
- Redraw();
- }
- break;
- case 'B': // Insert a bus.
- {
- if(m_mode != MODE_INSERT) {
- Bus* newBus = new Bus(m_camera->ScreenToWorld(event.GetPosition()));
- m_elementList.push_back(newBus);
- m_mode = MODE_INSERT;
- m_statusBar->SetStatusText(_("Insert Bus: Click to insert, ESC to cancel."));
- Redraw();
- }
- }
- break;
- default:
- break;
+ case WXK_ESCAPE: // Cancel operations.
+ {
+ if(m_mode == MODE_INSERT) {
+ m_elementList.pop_back(); // Removes the last element being inserted.
+ m_mode = MODE_EDIT;
+ Redraw();
+ }
+ }
+ break;
+ case 'R': // Rotate the selected elements.
+ {
+ std::vector<Element*>::iterator it = m_elementList.begin();
+ while(it != m_elementList.end()) {
+ Element* element = *it;
+ if(element->IsSelected()) {
+ element->Rotate();
+ }
+ it++;
+ }
+ Redraw();
+ }
+ break;
+ case 'B': // Insert a bus.
+ {
+ if(m_mode != MODE_INSERT) {
+ Bus* newBus = new Bus(m_camera->ScreenToWorld(event.GetPosition()));
+ m_elementList.push_back(newBus);
+ m_mode = MODE_INSERT;
+ m_statusBar->SetStatusText(_("Insert Bus: Click to insert, ESC to cancel."));
+ Redraw();
+ }
+ }
+ break;
+ default:
+ break;
}
}
@@ -405,27 +409,27 @@ void Workspace::UpdateStatusBar()
{
switch(m_mode)
{
- case MODE_DRAG:
- {
- m_statusBar->SetStatusText(_("MODE: DRAG"), 1);
- }
- break;
-
- case MODE_INSERT:
- {
- m_statusBar->SetStatusText(_("MODE: INSERT"), 1);
- }
- break;
-
- case MODE_MOVE_ELEMENT:
- case MODE_MOVE_PICKBOX:
- case MODE_SELECTION_RECT:
- case MODE_EDIT:
- {
- m_statusBar->SetStatusText(wxT(""));
- m_statusBar->SetStatusText(_("MODE: EDIT"), 1);
- }
- break;
+ case MODE_DRAG:
+ {
+ m_statusBar->SetStatusText(_("MODE: DRAG"), 1);
+ }
+ break;
+
+ case MODE_INSERT:
+ {
+ m_statusBar->SetStatusText(_("MODE: INSERT"), 1);
+ }
+ break;
+
+ case MODE_MOVE_ELEMENT:
+ case MODE_MOVE_PICKBOX:
+ case MODE_SELECTION_RECT:
+ case MODE_EDIT:
+ {
+ m_statusBar->SetStatusText(wxT(""));
+ m_statusBar->SetStatusText(_("MODE: EDIT"), 1);
+ }
+ break;
}
m_statusBar->SetStatusText(wxString::Format(_("ZOOM: %d%%"), (int)(m_camera->GetScale() * 100.0)), 2);