summaryrefslogtreecommitdiffstats
path: root/Project/Transformer.cpp
diff options
context:
space:
mode:
authorThales1330 <thaleslima.ufu@gmail.com>2016-08-30 17:30:54 -0300
committerThales1330 <thaleslima.ufu@gmail.com>2016-08-30 17:30:54 -0300
commitc478afa9fbef4b21ea85dbc266169b9eebf369a9 (patch)
treefde5344bf80f54324e9f3673e3c37eca4bb4ac3a /Project/Transformer.cpp
parent06e57f5c75772dcba902e3032c756f79090f3424 (diff)
downloadPSP.git-c478afa9fbef4b21ea85dbc266169b9eebf369a9.tar.gz
PSP.git-c478afa9fbef4b21ea85dbc266169b9eebf369a9.tar.xz
PSP.git-c478afa9fbef4b21ea85dbc266169b9eebf369a9.zip
Transformer
Diffstat (limited to 'Project/Transformer.cpp')
-rw-r--r--Project/Transformer.cpp63
1 files changed, 63 insertions, 0 deletions
diff --git a/Project/Transformer.cpp b/Project/Transformer.cpp
new file mode 100644
index 0000000..30413d5
--- /dev/null
+++ b/Project/Transformer.cpp
@@ -0,0 +1,63 @@
+#include "Transformer.h"
+
+Transformer::Transformer() : Element() {}
+Transformer::~Transformer() {}
+bool Transformer::AddParent(Element* parent, wxPoint2DDouble position)
+{
+ if(parent) {
+ // First bus.
+ if(m_parentList.size() == 0) {
+ m_position = position;
+ m_parentList.push_back(parent);
+ wxPoint2DDouble parentPt = parent->RotateAtPosition(
+ position, -parent->GetAngle()); // Rotate click to horizontal position.
+ parentPt.m_y = parent->GetPosition().m_y; // Centralize on bus.
+ parentPt = parent->RotateAtPosition(parentPt, parent->GetAngle()); // Rotate back.
+ m_pointList.push_back(parentPt); // First point
+ m_pointList.push_back(GetSwitchPoint(parent, parentPt, m_position));
+ return false;
+ }
+ // Second bus.
+ else if(parent != m_parentList[0])
+ {
+ m_parentList.push_back(parent);
+ wxPoint2DDouble parentPt = parent->RotateAtPosition(
+ position, -parent->GetAngle()); // Rotate click to horizontal position.
+ parentPt.m_y = parent->GetPosition().m_y; // Centralize on bus.
+ parentPt = parent->RotateAtPosition(parentPt, parent->GetAngle()); // Rotate back.
+
+ // Set first switch point.
+ wxPoint2DDouble secondPoint = parentPt;
+ if(m_pointList.size() > 2) {
+ secondPoint = m_pointList[2];
+ }
+ m_pointList[1] = GetSwitchPoint(m_parentList[0], m_pointList[0], secondPoint);
+
+ // Set the second switch point.
+ m_pointList.push_back(GetSwitchPoint(parent, parentPt, m_pointList[m_pointList.size() - 1]));
+
+ m_pointList.push_back(parentPt); // Last point.
+ m_inserted = true;
+
+ // The average between the two bus points.
+ m_position = wxPoint2DDouble((m_pointList[0].m_x + m_pointList[m_pointList.size() - 1].m_x) / 2.0,
+ (m_pointList[0].m_y + m_pointList[m_pointList.size() - 1].m_y) / 2.0);
+
+ m_width = 80.0;
+ m_height = 50.0;
+ m_rect = wxRect2DDouble(m_position.m_x - m_width / 2.0, m_position.m_y - m_height / 2.0, m_width,
+ m_height);
+
+ return true;
+ }
+ }
+ return false;
+}
+bool Transformer::Contains(wxPoint2DDouble position) const {return m_rect.Contains(position);}
+void Transformer::Draw(wxPoint2DDouble translation, double scale) const
+{
+
+}
+bool Transformer::Intersects(wxRect2DDouble rect) const { return false;}
+void Transformer::Rotate() {}
+void Transformer::UpdateSwitchesPosition() {}