summaryrefslogtreecommitdiffstats
path: root/Project/Transformer.cpp
diff options
context:
space:
mode:
authorThales Lima Oliveira <thaleslima.ufu@gmail.com>2016-09-03 01:10:18 -0300
committerThales Lima Oliveira <thaleslima.ufu@gmail.com>2016-09-03 01:10:18 -0300
commit077270f0294d236c6047d850703c5d011cb4b711 (patch)
treec655594e525222104c49564f097734537ccc322b /Project/Transformer.cpp
parentbd3f70a62f8c2868e20f094a0ad7dd8c977ab853 (diff)
downloadPSP.git-077270f0294d236c6047d850703c5d011cb4b711.tar.gz
PSP.git-077270f0294d236c6047d850703c5d011cb4b711.tar.xz
PSP.git-077270f0294d236c6047d850703c5d011cb4b711.zip
Motor implementation done, elements classes reorganized
Diffstat (limited to 'Project/Transformer.cpp')
-rw-r--r--Project/Transformer.cpp153
1 files changed, 1 insertions, 152 deletions
diff --git a/Project/Transformer.cpp b/Project/Transformer.cpp
index de92bea..cb18d2f 100644
--- a/Project/Transformer.cpp
+++ b/Project/Transformer.cpp
@@ -1,6 +1,6 @@
#include "Transformer.h"
-Transformer::Transformer() : Element() {}
+Transformer::Transformer() : Branch() {}
Transformer::~Transformer() {}
bool Transformer::AddParent(Element* parent, wxPoint2DDouble position)
{
@@ -148,25 +148,6 @@ void Transformer::Rotate()
}
}
-void Transformer::UpdateSwitchesPosition()
-{
- if(m_parentList[0]) {
- m_pointList[1] = GetSwitchPoint(m_parentList[0], m_pointList[0], m_pointList[2]);
- }
- else
- {
- m_pointList[1] = m_pointList[0];
- }
- if(m_parentList[1]) {
- m_pointList[m_pointList.size() - 2] = GetSwitchPoint(m_parentList[1], m_pointList[m_pointList.size() - 1],
- m_pointList[m_pointList.size() - 3]);
- }
- else
- {
- m_pointList[m_pointList.size() - 2] = m_pointList[m_pointList.size() - 1];
- }
-}
-
void Transformer::Move(wxPoint2DDouble position)
{
SetPosition(m_movePos + position - m_moveStartPt);
@@ -223,138 +204,6 @@ void Transformer::StartMove(wxPoint2DDouble position)
m_movePos = m_position;
}
-void Transformer::RemoveParent(Element* parent)
-{
- for(int i = 0; i < 2; i++) {
- if(parent == m_parentList[i]) {
- m_parentList[i] = NULL;
- UpdateSwitchesPosition();
- }
- }
-}
-
-bool Transformer::NodeContains(wxPoint2DDouble position)
-{
- wxRect2DDouble nodeRect1(m_pointList[0].m_x - 5.0 - m_borderSize, m_pointList[0].m_y - 5.0 - m_borderSize,
- 10 + 2.0 * m_borderSize, 10 + 2.0 * m_borderSize);
- wxRect2DDouble nodeRect2(m_pointList[m_pointList.size() - 1].m_x - 5.0 - m_borderSize,
- m_pointList[m_pointList.size() - 1].m_y - 5.0 - m_borderSize, 10 + 2.0 * m_borderSize,
- 10 + 2.0 * m_borderSize);
-
- if(nodeRect1.Contains(position)) {
- m_activeNodeID = 1;
- return true;
- }
- if(nodeRect2.Contains(position)) {
- m_activeNodeID = 2;
- return true;
- }
-
- m_activeNodeID = 0;
- return false;
-}
-
-bool Transformer::SetNodeParent(Element* parent)
-{
- if(m_activeNodeID == 1 && parent == m_parentList[0]) return false;
- if(m_activeNodeID == 2 && parent == m_parentList[1]) return false;
-
- if(parent && m_activeNodeID != 0) {
- wxRect2DDouble nodeRect(0, 0, 0, 0);
- if(m_activeNodeID == 1) {
- nodeRect =
- wxRect2DDouble(m_pointList[0].m_x - 5.0 - m_borderSize, m_pointList[0].m_y - 5.0 - m_borderSize,
- 10 + 2.0 * m_borderSize, 10 + 2.0 * m_borderSize);
- }
- if(m_activeNodeID == 2) {
- nodeRect = wxRect2DDouble(m_pointList[m_pointList.size() - 1].m_x - 5.0 - m_borderSize,
- m_pointList[m_pointList.size() - 1].m_y - 5.0 - m_borderSize,
- 10 + 2.0 * m_borderSize, 10 + 2.0 * m_borderSize);
- }
-
- if(parent->Intersects(nodeRect)) {
- if(m_activeNodeID == 1) {
- // Check if the user is trying to connect the same bus.
- if(m_parentList[1] == parent) {
- m_activeNodeID = 0;
- return false;
- }
-
- m_parentList[0] = parent;
-
- // Centralize the node on bus.
- wxPoint2DDouble parentPt = parent->RotateAtPosition(
- m_pointList[0], -parent->GetAngle()); // Rotate click to horizontal position.
- parentPt.m_y = parent->GetPosition().m_y; // Centralize on bus.
- parentPt = parent->RotateAtPosition(parentPt, parent->GetAngle());
- m_pointList[0] = parentPt;
-
- UpdateSwitchesPosition();
- return true;
- }
- if(m_activeNodeID == 2) {
- if(m_parentList[0] == parent) {
- m_activeNodeID = 0;
- return false;
- }
-
- m_parentList[1] = parent;
-
- wxPoint2DDouble parentPt =
- parent->RotateAtPosition(m_pointList[m_pointList.size() - 1], -parent->GetAngle());
- parentPt.m_y = parent->GetPosition().m_y;
- parentPt = parent->RotateAtPosition(parentPt, parent->GetAngle());
- m_pointList[m_pointList.size() - 1] = parentPt;
-
- UpdateSwitchesPosition();
- return true;
- }
- }
- else
- {
- if(m_activeNodeID == 1) m_parentList[0] = NULL;
- if(m_activeNodeID == 2) m_parentList[1] = NULL;
- }
- }
- return false;
-}
-
-void Transformer::UpdateNodes()
-{
- if(m_parentList[0]) {
- wxRect2DDouble nodeRect(m_pointList[0].m_x - 5.0 - m_borderSize, m_pointList[0].m_y - 5.0 - m_borderSize,
- 10 + 2.0 * m_borderSize, 10 + 2.0 * m_borderSize);
-
- if(!m_parentList[0]->Intersects(nodeRect)) {
- m_parentList[0] = NULL;
- UpdateSwitchesPosition();
- }
- }
- if(m_parentList[1]) {
- wxRect2DDouble nodeRect = wxRect2DDouble(m_pointList[m_pointList.size() - 1].m_x - 5.0 - m_borderSize,
- m_pointList[m_pointList.size() - 1].m_y - 5.0 - m_borderSize,
- 10 + 2.0 * m_borderSize, 10 + 2.0 * m_borderSize);
-
- if(!m_parentList[1]->Intersects(nodeRect)) {
- m_parentList[1] = NULL;
- UpdateSwitchesPosition();
- }
- }
-}
-
-void Transformer::RotateNode(Element* parent)
-{
- if(parent == m_parentList[0]) {
- m_pointList[0] = parent->RotateAtPosition(m_pointList[0], m_rotationAngle);
- }
- else if(parent == m_parentList[1])
- {
- m_pointList[m_pointList.size() - 1] =
- parent->RotateAtPosition(m_pointList[m_pointList.size() - 1], m_rotationAngle);
- }
- UpdateSwitchesPosition();
-}
-
bool Transformer::GetContextMenu(wxMenu& menu)
{
menu.Append(ID_EDIT_TRANSFORMER, _("Edit tranformer"));