diff options
author | Thales Lima Oliveira <thaleslima.ufu@gmail.com> | 2016-08-07 21:36:40 -0300 |
---|---|---|
committer | Thales Lima Oliveira <thaleslima.ufu@gmail.com> | 2016-08-07 21:36:40 -0300 |
commit | 139b076149594e6cf508aea269b061aa8b428d9c (patch) | |
tree | 759b8371bcc2e51d9474b4cc31f1f9bfd489bc06 | |
parent | 0899cd2aea1fe2e71184bd9c6a86f3bd988304e5 (diff) | |
download | PSP.git-139b076149594e6cf508aea269b061aa8b428d9c.tar.gz PSP.git-139b076149594e6cf508aea269b061aa8b428d9c.tar.xz PSP.git-139b076149594e6cf508aea269b061aa8b428d9c.zip |
Some minor fixes
-rw-r--r-- | .codelite/.tern-port | 2 | ||||
-rw-r--r-- | .codelite/.tern-project | 2 | ||||
-rw-r--r-- | .codelite/PSP.tags | bin | 80412672 -> 80414720 bytes | |||
-rw-r--r-- | .codelite/compilation.db | bin | 21504 -> 21504 bytes | |||
-rw-r--r-- | .codelite/refactoring.db | bin | 401408 -> 411648 bytes | |||
-rw-r--r-- | Project/Bus.cpp | 18 | ||||
-rw-r--r-- | Project/Bus.h | 1 | ||||
-rw-r--r-- | Project/Element.h | 1 | ||||
-rw-r--r-- | Project/Project.mk | 7 | ||||
-rw-r--r-- | Project/Release/Bus.cpp.o | bin | 14297 -> 14533 bytes | |||
-rw-r--r-- | Project/Release/Element.cpp.o | bin | 4898 -> 4924 bytes | |||
-rw-r--r-- | Project/Release/PSP-UFU.exe | bin | 3242405 -> 3242477 bytes | |||
-rw-r--r-- | Project/Release/Workspace.cpp.o | bin | 88864 -> 88804 bytes | |||
-rw-r--r-- | Project/Workspace.cpp | 332 |
14 files changed, 188 insertions, 175 deletions
diff --git a/.codelite/.tern-port b/.codelite/.tern-port index 71d1d13..335a5be 100644 --- a/.codelite/.tern-port +++ b/.codelite/.tern-port @@ -1 +1 @@ -64904
\ No newline at end of file +56113
\ No newline at end of file diff --git a/.codelite/.tern-project b/.codelite/.tern-project index 09b6465..d5969c6 100644 --- a/.codelite/.tern-project +++ b/.codelite/.tern-project @@ -8,6 +8,8 @@ "node_resolve": { }, "node": { + }, + "complete_strings": { } } }
\ No newline at end of file diff --git a/.codelite/PSP.tags b/.codelite/PSP.tags Binary files differindex d943253..5c684ce 100644 --- a/.codelite/PSP.tags +++ b/.codelite/PSP.tags diff --git a/.codelite/compilation.db b/.codelite/compilation.db Binary files differindex f97137e..d5073c8 100644 --- a/.codelite/compilation.db +++ b/.codelite/compilation.db diff --git a/.codelite/refactoring.db b/.codelite/refactoring.db Binary files differindex 9021470..01cf2f5 100644 --- a/.codelite/refactoring.db +++ b/.codelite/refactoring.db 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 Binary files differindex 8f5a654..89adaf8 100644 --- a/Project/Release/Bus.cpp.o +++ b/Project/Release/Bus.cpp.o diff --git a/Project/Release/Element.cpp.o b/Project/Release/Element.cpp.o Binary files differindex 3f07424..80f7c31 100644 --- a/Project/Release/Element.cpp.o +++ b/Project/Release/Element.cpp.o diff --git a/Project/Release/PSP-UFU.exe b/Project/Release/PSP-UFU.exe Binary files differindex 7b86997..894231a 100644 --- a/Project/Release/PSP-UFU.exe +++ b/Project/Release/PSP-UFU.exe diff --git a/Project/Release/Workspace.cpp.o b/Project/Release/Workspace.cpp.o Binary files differindex e9d4782..8a65ece 100644 --- a/Project/Release/Workspace.cpp.o +++ b/Project/Release/Workspace.cpp.o 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); |