1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
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() {}
|